jQuery: пользовательская функция не отвечает

#jquery #function

#jquery #функция

Вопрос:

Я пытаюсь написать простую функцию проверки. Для некоторого ответа я не могу заставить функцию возвращать логическое значение. На данный момент я вообще не получил никакого ответа от нажатия кнопки отправить.

 $.fn.ValidateSelect = function() {
//function ValidateSelect() { (this works)

    var selected = $('select[name="my-item-size"]').val();

    var validate = false;

    if (selected != 'none') {               
        validate = true;    
    } else {
        validate = false;
    }

    if (validate == true) {             
        return true
    } else {
        return false
    }
};


//submit
$('.add_item_button').click(function() {    

    if (ValidateSelect() == true) {
        $('#item_submit').submit();
    } else {
        alert('Please select your brand first.')
}

});
 

Комментарии:

1. Вы не вызываете функцию. ValidateSelect это имя переменной и будет undefined . Если вы расширяете jQuery таким образом, вы бы предпочли вызвать его с $(selector).ValidateSelect() помощью . Но, возможно, для вас достаточно простой, обычной функции.

2. Теперь я сделал это обычной функцией, и она работает.

Ответ №1:

Вам нужно не расширение jQuery, а функция javascript.

  function ValidateSelect() {

    var selected = $('select[name="my-item-size"]').val();

    var validate = false;

    if (selected != 'none') {               
        validate = true;    
    } else {
        validate = false;
    }

    if (validate == true) {             
        return true
    } else {
        return false
    }
};


//submit
$('.add_item_button').click(function() {    

    if (ValidateSelect() == true) {
        $('#item_submit').submit();
    } else {
        alert('Please select your brand first.')
}

});
 

Ответ №2:

я считаю, что это должно быть $.ValidateSelect() == true . Вызов ValidateSelect сам по себе будет означать, что это переменная, а не функция конкретно здесь.

Также я думаю, что было бы разумнее поместить ее в обычную функцию вне jQuery (по крайней мере, так кажется)

Приветствия

Ответ №3:

Вам нужно на самом деле вызвать функцию:-

 $('.add_item_button').click(function() {    

    if (ValidateSelect() == true) {
        $('#item_submit').submit();
    } else {
        alert('Please select your brand first.')
}