我想用ajax提交表单。 所以我没有使用type=submit
。 我使用的是onClick
的链接(在事件<a>
)使用Ajax发送表单数据。 我也想利用HTML5表单验证能力。
所以在发送数据之前,我使用的功能.checkValidity
检查形式的有效性。
如果返回true,则我发送数据。 但是,当它返回false我想告诉用户该形式是无效的使用HTML5默认的通知方案。 但我不知道如何来触发。
有没有什么办法可以显示窗体的验证程序。
其中一个办法就是触发提交事件如果checkValidity
返回false。 但是,这将刷新页面。 我不想改变页面的状态。
checkValidity
仅检查有效性和通知程序。 它不以交互方式通知用户。
我们有完全相同的问题,我们尝试了非常不同的事情,他们中的很多都像假的提交和event.preventDefault黑客()方法。 总之,我必须说,HTML5验证是在实践中一般不错,但真的不好,因为它无法显示后端验证错误的方式为前端验证错误一样。
而只有上帝知道为什么HTML5人们didnt想过一个简单的API,我们可以引发这样element.triggerValidationMessage验证(“我的信息”);
如果你让你的表单中有一个提交按钮,返回false你可以做到这一点! 你可以做到这一点在同一个事件处理的非的提交! 所以,第一次测试,如果你是一个形式的一部分,如果是这样,使它检查有效性,永不返回true(即使有效)!
$('.ajx')
.on("submit click", function(e) {
var $this = $(this)
//Force native form validating and notification
form = $this.closest('form')[0]
if (form) {
//Follow through with form submit (element must be of submit type!)
if(!form.checkValidity()) {
//don't ask me!
sleep(3000);
return false
}
}
//only preventDEfault AFTER possible form element click
e.preventDefault()
//...your project further ajax code
//Makes sure your form never submits
if (e.type=='submit') return false
}
小缺点:你必须这样做,提交按钮,但它总是可以改变你的<a>
成type=submit
。 你不必改变非形式<a>
不过的!