2012-02-14 3 views
3

То, что я делаю, - это захват действия щелчка на кнопке отправки формы, preventDefault() Ввод его, выполнение некоторых вычислений, а затем вызов ajax вместо отправки формы.Использовать проверки html5, даже если форма никогда не отправляется?

Есть ли способ использовать javascript, чтобы заставить валидаторы html5 срабатывать, даже если форма не отправляется?

$('#submitButton').click(function (e) { 
     e.preventDefault(); //stop the form from submitting 

     //Do computation 

     $.post('/comments', values, function(results) { 
      hideForm($('#new_comment_' + parentId)); 
      parent.children('.children').prepend(results); 
     }, 'html'); 
    }); 
+0

Да я могу свернуть свою собственную проверку в JavaScript, но html5, что требуется = «требуется» тег просто и красиво и устанавливает прилично ищет всплывающую GUI для вас. Меньшая работа и меньшая сложность кода всегда являются плюсом, но в конечном итоге он слишком много работает, чтобы использовать проверки html5. Я могу просто сделать свои собственные javascript. –

ответ

8

Работает отлично, я тестировал последние Chrome и Firefox. Просто e.preventDefault() на <form>:

HTML:

<form method="post" action="test.html"> 
    <input type="text" required></input> 
    <input type="submit" value="Submit"> 
</form> 

JQ:

$('form').submit(function(e){ e.preventDefault(); }); 

пример:http://jsfiddle.net/elclanrs/2nnLc/2/

+2

Ах, поймайте отправку формы, а не кнопку отправки. Очень умная идея спасибо :) –

3

Использование html5 ограничений объект формы имеет несколько новых методов. Например, вы можете вызвать checkValidity() на объекте формы, чтобы проверить ввод.

<form method="post" action="test.html" id="myForm"> 
    <input type="text" required></input> 
    <input type="submit" value="Submit" id="submitButton"> 
</form> 

<script type="text/javascript"> 
    $('#submitButton').click(function (e) { 
     e.preventDefault(); 
     alert($("#myForm").get()[0].checkValidity()); 
    }) 
</script> 
Смежные вопросы