2014-01-30 4 views
0

Я пытаюсь проверить простую форму.Проверка формы возвращает неверное значение

<form action="#"> 
    <input type="text" placeholder="Enter your name" id="name"/> 
    <button type="submit">Send</button> 
</form> 

Это код, который я использую.

var name = $('#name').val(); 

    $('form').submit(function(){ 
     checkForm(); 
    }); 

    function checkForm(){ 
     if(name === ''){ 
      $('#name').addClass('error'); 
      console.log('error'); 
     } else { 
      $('#name').removeClass('error'); 
      console.log('success!'); 
     }  
    } 

Проблема в том, что ошибка журнала консоли "каждый раз, независимо от моего ввода. Что мне здесь не хватает?

ответ

1

Переменная обновляется только на странице загрузки, когда наиболее вероятно вход пуст, после того, что при обновлении значения ввода, которое не отражено в названии переменной

Вместо чтения значения name поля в проверке метод, так что он будет содержать обновленное значение

$('form').submit(function() { 
    //optional to prevent form submit 
    return checkForm(); 
}); 

function checkForm() { 
    //read the value of name field here 
    var name = $('#name').val(); 
    if (name === '') { 
     $('#name').addClass('error'); 
     console.log('error'); 
     //return false to notify that there is an error 
     return false; 
    } else { 
     $('#name').removeClass('error'); 
     console.log('success!'); 
    } 
} 

Demo: Fiddle

+0

Спасибо, что была проблема. Но как получилось, что addClass/removeClass работает? – Operator

+0

@ Оператор, который также не работал !!! Я думаю, что в вашем случае страница может быть обновлена, поэтому вы предположили, что класс удален –

+0

Да, это было так! Большое вам спасибо за все ваши замечательные объяснения! Возврат false в выражении if предотвращает перезагрузку страницы, если есть ошибка. Еще раз спасибо. – Operator

1

Вы не прошли значение имени в функции с именем checkForm().

$('form').submit(function(){ 
    var name = $('#name').val(); 
    checkForm(name); 
}); 

function checkForm(name) { 
    if (name === '') { 
    $('#name').addClass('error'); 
    console.log('error'); 
    } else { 
    $('#name').removeClass('error'); 
    console.log('success!'); 
    } 
} 
Смежные вопросы