Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止提交但仍验证必填字段?_Javascript_Jquery_Ajax_Html_Validation - Fatal编程技术网

Javascript 如何防止提交但仍验证必填字段?

Javascript 如何防止提交但仍验证必填字段?,javascript,jquery,ajax,html,validation,Javascript,Jquery,Ajax,Html,Validation,我有一个表单,当提交表单时,我使用e.preventDefault()阻止它,但我仍然希望浏览器在我进行AJAX调用之前验证所需的字段 我不想对javascript验证感兴趣,我只想让浏览器验证所需字段(HTML5) 如何实现这一点?在提交功能的末尾添加以下内容: if (evt && evt.preventDefault) { evt.preventDefault(); } else if (event) { event.returnValue = false;

我有一个表单,当提交表单时,我使用
e.preventDefault()
阻止它,但我仍然希望浏览器在我进行AJAX调用之前验证所需的字段

我不想对javascript验证感兴趣,我只想让浏览器验证所需字段(HTML5)


如何实现这一点?

在提交功能的末尾添加以下内容:

if (evt && evt.preventDefault) {
    evt.preventDefault();
} else if (event) {
    event.returnValue = false;
}

return false;
并在函数中传递var
evt
,如下所示:

function(evt) { /* Your Code */ }

即使您没有执行
检查有效性
检查,它也可以工作。在chrome中,如果表单无效,则不会调用表单上的提交函数:

$(document).ready(function(){
    $("#calendar_form").submit(function(e){
        e.preventDefault();
        calendarDoAjax();
    });

    function calendarDoAjax(){
        var proceed = false;
        if( $("#calendar_form")[0].checkValidity ){
            if ($("#calendar_form")[0].checkValidity()) {
                proceed = true;
            }
        }else{
            proceed = true;
        }
        if (proceed) {
            //Do ajax call
        }
    }

});

对于不支持HTML5表单验证的浏览器有什么考虑/回退吗?如果浏览器支持HTML5验证,则不需要添加任何内容(只要有适当的属性)。类似这样的:复制品:@JackPattishallJr。是的,但是现在我没有时间。由于我在服务器端使用了一个框架,所以字段仍然是经过验证的。谢谢,没用,我只是试过了。这一个工作原理如下: