带有HTML5validation的JQuery对话框表单

我正在创建一个HTML5示例应用程序,但我遇到了一些简单的问题: – /这是我想要做的:

我有一个链接,它打开一个JQuery模式对话框。 在该对话框中,有一个表单(包含2个字段)。 当我点击’Envoyer’按钮(这是一个JQuery按钮……而不是提交按钮)时,我想触发HTML5本机validation。 如果validation没问题,我想执行一些代码,然后关闭对话框。 如果validation失败,我想看到浏览器的“提示”并让用户像往常一样修改值。

第一个问题是JQuery’Envoyer’按钮不是提交按钮,事实上,它不会触发HTML5validation。

我在该论坛上找到了解决方法:只需触发click事件(它正在工作)。 所以现在,当我点击“Envoyer”按钮时,会触发validation。

第二个问题是:如果validation正常,如何执行一个代码,如果validation失败,如何执行另一个代码? 我在论坛上找到了checkValidity()方法,它可以测试字段(实际工作)或表单的有效性……但我不能使它在表单对象上工作。 (错误是: Uncaught TypeError: Object #没有方法’checkValidity’)

第一个问题:为什么我不能在我的表单上调用checkValidity()(我使用的是Chrome 18)

第二个问题:我已经做了一些有效的工作,但我确信有更好的方法可以做到这一点,因为它有点棘手。 你能帮忙买一个更干净的代码吗?

这是我做过的代码:

  $("#dialog-form").dialog({ height : '400', width : '400', modal : true, autoOpen : false, //position : 'top', overlay : { backgroundColor : '#000', opacity : 0.5 }, buttons : { 'Envoyer' : function() { if ($('#dialog-form input[type=text]')[0].checkValidity()) { // If validation is OK for that field, do the stuff and close the modal dialog MyNotes.notesController.createPendingNote(); MyNotes.notesController.resetPendingNote(); $(this).dialog('close'); } else { // If validation failed, submit the form // to trigger html5 validation $('#dialog-form input[type=submit]').click(); } }, Cancel : function() { $(this).dialog('close'); } } });