const btnSearch = [...document.querySelectorAll('a.validate')];
const fieldNik = document.getElementsByClassName('form-nik');
window.validate = function () {
for(const i of btnSearch.keys()){
btnSearch[i].onclick = function(){
var validate = true;
let identity = $(fieldNik[i]).val().replaceAll(' ', '').replaceAll('_', '');
if (!identity) {
bootbox.alert('NIK Tidak Boleh Kosong !');
validate = false;
} else if (identity[0] == '0') {
bootbox.alert('NIK tidak valid. Digit pertama tidak boleh 0');
validate = false;
} else if (identity[1] == '0') {
bootbox.alert('NIK tidak valid. Digit kedua tidak boleh 0');
validate = false;
} else if (identity.substr(12) == '0000') {
bootbox.alert('NIK tidak valid. 4 Digit terakhir tidak boleh nol');
validate = false;
} else if (identity.length < 16) {
bootbox.alert('NIK harus 16 digit !');
validate = false;
}
return validate;
}
}
}
我想使用数据集在按钮中进行验证:
data-validatefunc="validate"
我的问题:此功能return validate;
中的window.validate
如何?我尝试在window.validate
中执行操作,但仍然失败。此循环功能是否不能返回forEach()
之类的值?
您没有为validate()
定义返回,只是为按钮单击事件返回。您应该制作一个带有返回的独立validate()
函数,然后将该函数分配给按钮。
这里是一个简短的示例:
//REM: Validation function as whole standalone function
function validate(){
var fieldNik = document.getElementsByClassName('form-nik');
var validate = true;
//REM: Whatever comes inbetween
//REM: Actual validation
return validate
};
//REM: Assigning the validation function to the button click-event
const btnSearch = [...document.querySelectorAll('a.validate')];
for(const i of btnSearch.keys()){
btnSearch[i].onclick = validate
};