JS var декларирование - неправильная проверка из-за проблем с функцией с переменной, содержащей то же значение - PullRequest
0 голосов
/ 21 мая 2011

Я делаю проверку для формы "Ввод текста".Если пользователь оставляет ввод пустым, функция начинает работать.Если поле больше 1 - значит, оно не попадает в функцию.

Проблема в следующем: в первый раз пользователь оставил ввод пустым, функция запустилась, и я получил предупреждение - все нормально,Во второй раз, пользователь добавил 10 в поле ввода AGE - И снова он получает предупреждение - Но он не должен.

Примечание: значение ввода возраста возвращает из другой функции (calc) в переменную с именем: result.

это код:

$(document).ready(function(){
$('#btn_send').click(function(){
    //var result gets the value ffrom another function of input "Age" value. -> return thisform.Age.value
    var result = calc(document.getElementById("campaignform")); 
        if (result<1)
        {
            $("#campaignform").submit(function(event) {
            event.preventDefault(); alert ("prevent default");
            });
        }
        else{
        return true;
        };
});

});

, поэтому, если вы попробуете второй раз нажать кнопку Отправить, вы попадете в $ ('#btn_send '). click (function () и несмотря на то, что вы добавили, например, 67 во вход AGE (возврат как результат), вы попадаете в выражение IF, которое: if (result <1) </p>

I'mдовольно плохо знаком с разработкой, так что я надеюсь, что вы меня поймете. Извините, если у меня есть ошибки. Можете ли вы посоветовать, что может быть лучше НАЗВАНИЕ для этого вопроса?

заранее спасибо, Shai

1 Ответ

0 голосов
/ 21 мая 2011
        $("#campaignform").submit(function(event) {

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

Обработчики событий jQuery можно удалить с помощью метода unbind , но, как правило, лучше избегать добавления и удаления обработчиков. Проще, а также более надежно, поскольку перехватывать нажатия кнопок могут не получить все отправленные формы, - это делать все в одном статическом обработчике событий submit, например:

$('#campaignform').submit(function(ev){
    var result= calc(this);
    if (result<1) {
        ev.preventDefault();
        alert('prevent default');
    }
});
...