阻止表单提交(javascript)

前端之家收集整理的这篇文章主要介绍了阻止表单提交(javascript)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带有文本输入的表单:
<form name="form1">
    <cfinput type="text" name="text1" id="text1" onChange="someFunc();">
</form>

我只希望它在某些情况下提交. (我先运行一些错误检查)

<script>
function someFunc() {
    if (1==2) {
    document.form1.submit();
} else {
            alert("Not submitting");
    }
</script>

问题是:即使警报触发正常,不知何故,表单仍在提交(除了那个之外没有其他提交声明!).

非常感谢,如果有人能够对此有所了解. . .

解决方法

这种方法存在根本缺陷.您当前正在告诉表单,当text1更改时,然后调用someFunc().如果为true,请使用JavaScript提交表单.如果不对,请继续关注您的业务.如果在文本输入中按Enter键,表单仍会提交.如果有一个单击的提交按钮,表单仍然会提交.

解决这个问题的基本方法是这样的:

<form name="form1" onsubmit="return someFunc()">
    <input type="text" name="text1" id="text1">
</form>

提交from时,调用someFunc().此函数必须返回true或false.如果返回true,则表单提交.如果为false,则表单不执行任何操作.

现在您的JavaScript需要稍作修改

<script>
function someFunc() {
    if (1==2) {
        return true;
    } else {
        alert("Not submitting");
        return false;
    }
}
</script>

更改字段时,您仍可以调用其他函数,但它们仍然无法管理表单的最终提交.事实上,someFunc()可以在返回true或false之前调用其他函数进行最终检查,然后返回onsubmit事件.

编辑:Documentation on implicit form submission.

编辑2:

这段代码

$(document).ready(function(){ 
    $("#text1").on('change',function(event){ 
        event.preventDefault(); 
    }); 
});

正在停止与该元素关联的更改事件的默认处理.如果您想影响提交事件,那么您可以这样做:

$(document).ready(function(){ 
    $("#form1").submit(function(event){ 
        event.preventDefault(); 
    }); 
});

这将允许你做这样的事情:

$(document).ready(function(){ 
    $("#form1").submit(function(event){ 
        if ( $('#text1').val() !== "foo" ) {
            alert("Error");
            event.preventDefault(); 
        }
    }); 
});
原文链接:https://www.f2er.com/html/226955.html

猜你在找的HTML相关文章