2014-09-28 6 views
0

Я хочу выполнить проверку формы с помощью jQuery. Сейчас я использую HTML5 «необходимый» внутри входного тега, и этот код JQuery для проверки:Проверка формы с помощью jQuery (без validation.js)

JQuery:

$("#register").click(function() { 

    $("#register input").each(function() { 
     $(this).css('border','none'); 
     if(!$(this).val()) { 
      $(this).css('border','solid 1px red'); 
     } 
     var email_reg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
     if($(this).attr("type")=="email" && !email_reg.test($(this).val())){ 
      $(this).css('border','solid 1px red'); 
     } 
    }); 

При использовании IE9, нет поддержки в HTML5 «требуется» , поэтому, хотя скрипт работает, он все еще запускает файл INF-файла ввода. Я буду рад узнать, могу ли я исправить это с использованием существующего кода и без использования validate.js или других внешних файлов.

HTML5:

<form id="register" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post"> 
<p><label>First name</label><input type="text" id="name" name="name" required="true" /></p> 
<p><label>Last name</label><input type="text" id="fname" name="fname" required="true" /></p> 
<p><label>Email</label><input type="email" id="email" name="email" required="true" /></p> 
<p> 
    <label>Phone</label> 
    <input id="area-code" type="text" name="code" maxlength="3" required="true" onkeydown="return isNumber(event);" /> 
    <input id="phone" type="text" name="phone" required="true" maxlength="17" onkeydown="return isNumber(event);" /> 

</p> 
<input type="submit" value="GET BONUS NOW" id="submit-btn" /> 
<?php include 'form.php';?> 

ответ

1

Вам необходимо перейти от проверки из click события в submit:

$("#register").submit(function() { 

и изменить код, чтобы искать ошибки с некоторыми булева флага и возвращения false если ошибки не найдены:

var errors = false; 
$("#register input").each(function() { 

    $(this).css('border','none'); 
    if(!$(this).val()) { 
     $(this).css('border','solid 1px red'); 
     errors = true; 
    } 
    var email_reg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
    if($(this).attr("type")=="email" && !email_reg.test($(this).val())){ 
     $(this).css('border','solid 1px red'); 
     errors = true; 
    } 
}); 
if(errors) { 
    return false; 
} 
+0

Спасибо, что нашли время и помогли мне. Этот код работает, но теперь я хотел бы знать две вещи: (1) Он работает только с событием click, а не с отправкой события (попробовал оба). (2) В IE9 я могу ввести неверный адрес электронной почты. – yuvalsab

+0

1. Он должен работать только на отправке события. Посмотрите, является ли идентификатор 'register' уникальным в HTML и применяется к элементу'

'. 2. Это треугольник, вы уверены, что ваше регулярное выражение правильно? – antyrat

+0

оказывается, что он не работает в событии отправки из-за «обязательного» внутри тега ввода. Было приятно, что я мог бы использовать их обоих. Почему бы не использовать событие click ...? – yuvalsab

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