一尘不染

jQuery表单检查返回true,但需要返回false

ajax

提交表单时,我正在运行此表单检查:

if((formData[4].value == 1 || formData[4].value == 2) && !formData[2].value) { 
    alert('Please fill out the key field');
    return false;
} else {
    $.ajax({
        url: "/ajax/key_check.php",
        cache: false,
        data: "key=" + formData[4].value,
        dataType: "html",
        success: function(data) {
            if(data == 1) {
                alert('Key already exists');
                return false;
            }
        }
    });

    return true;
}

该脚本有效,如果数据== 1,它会警告键已经存在,但是表单仍在提交。我以为如果data ==
1则返回false将停止处理表单,但是无论如何它都会继续并添加键,并且弹出键已经存在。如果data == 1,如何阻止表单提交?我什至尝试这样做:

if(data == 1) {
    alert('Key already exists');
    return false;
} else {
    return true;
}

然后删除脚本底部的return true,但是会发生相同的问题。弹出窗口出现,但表单仍得到处理。


阅读 350

收藏
2020-07-26

共1个答案

一尘不染

一个return回调的回报 从回调 ,不是父功能像你想......但你 得到的效果你想要的,就像这样:

if((formData[4].value == 1 || formData[4].value == 2) && !formData[2].value) { 
    alert('Please fill out the key field');
    return false;
} else {
    $.ajax({
        url: "/ajax/key_check.php",
        cache: false,
        data: "key=" + formData[4].value,
        dataType: "html",
        success: function(data) {
            if(data == 1) {
                alert('Key already exists');
            } else {
              $("#someForm")[0].submit();
            }
        }
    });
    return false;
}

这样做永远不会直接提交,但是 如果 检查正常,请调用* native
.submit()方法,提交表单,然后不再运行此处理程序。

2020-07-26