展会形式默认验证状态编程(Show form default Validation Status P

2019-07-03 21:27发布

我想用ajax提交表单。 所以我没有使用type=submit 。 我使用的是onClick的链接(在事件<a> )使用Ajax发送表单数据。 我也想利用HTML5表单验证能力。
所以在发送数据之前,我使用的功能.checkValidity检查形式的有效性。
如果返回true,则我发送数据。 但是,当它返回false我想告诉用户该形式是无效的使用HTML5默认的通知方案。 但我不知道如何来触发。

有没有什么办法可以显示窗体的验证程序。

其中一个办法就是触发提交事件如果checkValidity返回false。 但是,这将刷新页面。 我不想改变页面的状态。

checkValidity仅检查有效性和通知程序。 它不以交互方式通知用户。

Answer 1:

我们有完全相同的问题,我们尝试了非常不同的事情,他们中的很多都像假的提交和event.preventDefault黑客()方法。 总之,我必须说,HTML5验证是在实践中一般不错,但真的不好,因为它无法显示后端验证错误的方式为前端验证错误一样。

而只有上帝知道为什么HTML5人们didnt想过一个简单的API,我们可以引发这样element.triggerValidationMessage验证(“我的信息”);



Answer 2:

如果你让你的表单中有一个提交按钮,返回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>不过的!



文章来源: Show form default Validation Status Programmatically