javascript - 即使验证返回 false,表单仍会提交

标签 javascript jquery

当我使用通用警报框时,表单验证工作正常,但如果我尝试使用 JQuery 脚本使警报框看起来不错,则尽管返回的值为 false,表单仍会验证并提交

有效的标准警报框

function validate(){
    if( document.audit_form.audit_name.value == "" )
       {
         alert( "Please select a name for your audit" );
         document.audit_form.audit_type.focus() ;
         return false;
     }
return true;
}

尝试使用来自 codecanyon 的 jQuery MsgBox

function validate(){
    if( document.audit_form.audit_name.value == "" )
       {
         $.msgbox("Please select an audit type", 
                    {
                        type:"alert",
                        buttons: [
                            {type: "submit", value: "Ok"}
                        ]
                    },
                    function(result){

                    if (result && result=='Ok'){
                        return false;
                    }
            });
       }
return true();
}

与 Apprise 的尝试二

function validate(){
    if( document.audit_form.audit_name.value == "" )
       {
         apprise('Please enter a name for your audit?', {'textOk' : 'Ok',}, function(r) {

            if(r) { 
                return( true );
            } else { 
                return (false);
            }
        });
       }
}

在所有三种情况下,警报框都会在应有的时候显示,但对于 JQuery 版本,表单仍会提交。使用

调用函数
 <form id="audit_form" name="audit_form" method="post" enctype="multipart/form-data" 
action="<?php echo $_SERVER['PHP_SELF']; ?>" onsubmit="return validate();">

最佳答案

$.msgboxapprise 都不是阻塞函数,并且结果在函数回调之前返回,你应该改变你的逻辑。基本上这就是您的表单提交方式 should看起来像:

$('#audit_form').submit(function(event){
     event.preventDefault();
     yourUIAlertFunction(..., ..., function(isSuccess){
          if(isSuccess){
              submitFormLogic();
          } else {
              hideAlertAndShowErrors();
          }
     });
});

关于javascript - 即使验证返回 false,表单仍会提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18392369/

相关文章:

javascript - 如何在 node.js 中使用 sqlite3 - 什么是 smt?

javascript - 动态加载和删除 Javascript 函数

javascript - 设置asp :HiddenField value on anchor click in jQuery

javascript - 如何将 Coffeescript 添加到 Node.js 骨架框架?

javascript - 从另一个 JavaScript 文件导入变量

javascript - 用 typescript 编写的 CLick 事件监听器自行解除绑定(bind)

javascript - 使用 jQuery 完全删除加载的表单 -

javascript - jQuery - 从字符串数组中删除重复项

jquery - 如何让 jQuery printElement 打印带有 css 类的 div?

javascript - Angular.JS ng-repeat 与嵌套 json 数组