Как вернуть функцию в l oop (для .. из ..) javascript? - PullRequest
0 голосов
/ 06 мая 2020
    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; в этом веселье c window.validate? Я пробовал делать в window.validate, но все равно не получилось. не может ли эта функция l oop вернуть значение типа forEach()?

1 Ответ

0 голосов
/ 06 мая 2020

Вы не определили возврат для 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
};

Назовете ли вы это validate или window.validate не имеет значения в вашем контексте, поскольку this равно window.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...