2015-12-16 4 views
-2

Я строю проверку для полей формы для формы. Таким образом, мне нужно сделать проверку, который я делаю так:Reset event.preventDefault()

$(document).ready(function() { 

    $('#submitbutton').click(function() { 

     if (validateField()) { 
      $('form.checkout_form_validate').submit(function(event) { 
       return true; 
      }); 
     } 
     else { 
      $('form.checkout_form_validate').submit(function(event) { 
       event.preventDefault(); 
       return false; 
      }); 
     } 
    }); 


    function validateField() { 
     var first_name = $('#first_name').val(); 
     var last_name = $('#last_name').val(); 
     var shipping_address = $('#shipping_address_1').val(); 
     var city = $('#city').val(); 
     var state = $('#state').val(); 
     var phone = $('#phone').val(); 

     if (first_name == "" || last_name == "" || shipping_address == "" || city == "" || state == "" || phone == "") { 
      $('#errorcontainer').html('Fill out all the required fields <br/>'); 
      $('#errorcontainer').fadeIn('fast'); 
      return false; 
     } else { 
      return true; 
     } 
    } 

}); 

Таким образом, если пользователь просто нажать кнопку отправки, он выдаст сообщение об ошибке и форма не будет представить, но, если после того, как делать это, пользователь заполняет всю форму, а затем нажимает submit, ничего не произойдет, даже если validateField() истинно. Как «перезагрузить» его? Есть идеи ?

+0

На каждой нажмите на кнопку отправить, вы связывание новой формы представить обработчик. Не встраивать события ... –

+0

В этом случае я использую ajax для отправки проверенных данных на сервер. – raBne

+0

@ user3850805 Это не очень хорошая идея ... – candh

ответ

3

При каждом нажатии кнопки отправки вы связываете новую форму. Отправьте обработчик. Не гнездятся события ...

логика проверки Вы должны быть:

$(function() { 
    $('form.checkout_form_validate').submit(function(event) { 
    return validateField(); 
    }); 
}); 

function validateField() { 
    var first_name = $('#first_name').val(); 
    var last_name = $('#last_name').val(); 
    var shipping_address = $('#shipping_address_1').val(); 
    var city = $('#city').val(); 
    var state = $('#state').val(); 
    var phone = $('#phone').val(); 

    if (first_name == "" || last_name == "" || shipping_address == "" || city == "" || state == "" || phone == "") { 
    $('#errorcontainer').html('Fill out all the required fields <br/>'); 
    $('#errorcontainer').fadeIn('fast'); 
    return false; 
    } else { 
    return true; 
    } 
} 
+0

ничего себе! не думал об этом! – candh

0

Вам не нужно e.preventDefault(); и возврат false; утверждение, что они делают то же самое

вернуть ложные внутри обработчик событий JQuery = e.preventDefault() и e.stopPropagation()

Смежные вопросы