2013-08-10 3 views
0

У меня есть супер простой вид:HTML5 атрибут требуется ввод позволяет мне отправить форму

<form> 
    <input name="name" placeholder="Your name" required> 
    <input name="email" type="email" placeholder="Your email" required> 
    <input type="submit" value="Submit"> 
</form> 

Я представить его с помощью некоторых JQuery (CoffeeScript стиль):

$('form').submit (event) -> 
    do event.preventDefault() 

    $.post('../mail.php', $('form').serialize(), (data) -> 
     do $('form')[0].reset 
    ) 
    .done -> ... 
    .fail -> ... 
    .always -> ... 

В Chrome (как в Chrome Canary) он работает как шарм, и он не позволит мне отправить мою форму, если некоторые из входов пустые (в ней также отображается сообщение «Пожалуйста, заполните это поле», как и должно быть). Во многих других браузерах (Safari, WebKit Safari, т. Е.) Он позволяет мне отправить форму со всеми входами пустым.

В чем проблема? Я немного беспокоюсь об этом event.preventDefault, может быть, он останавливает некоторые браузеры от проверки input?

+0

Можете ли вы разместить образец для jsfiddle –

ответ

2

Вы еще не можете положиться на опору required (к сожалению). См.: http://caniuse.com/#feat=form-validation Как вы можете видеть, Safari еще не полностью поддерживает этот API.

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

+0

Невозможно посетить caniuse, и я прошу прощения. Я был так много в использовании Chrome, что я предполагал, что каждый другой современный браузер поддерживает это. Сожалею! – whatyouhide

+0

В качестве примечания, Modernizr дает мне поддерживаемый атрибут 'require', даже в браузерах, которые не полностью поддерживают это свойство. Разве это не плохо для решений резервного копирования? – whatyouhide

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