JS var 声明 - 由于变量保持相同值的函数问题而导致错误的验证

JS var declaring - Wrong validation due to function problem with variable holding same value

本文关键字:函数 问题 验证 错误 声明 var 于变量 变量 JS      更新时间:2023-09-26

我正在对表单"文本输入"进行验证。如果用户将输入留空,则函数开始运行。如果字段大于 1 - 则它不会进入函数。

问题是:第一次,用户将输入留空,函数运行,我收到警报 - 没关系。第二次,用户在 AGE 输入中添加了 10 - 他再次收到警报 - 但他不应该。

注意:年龄输入值,从不同的函数 (calc) 返回到称为:结果的变量。

这是代码:

$(document).ready(function(){
$('#btn_send').click(function(){
    //var result gets the value ffrom another function of input "Age" value. -> return thisform.Age.value
    var result = calc(document.getElementById("campaignform")); 
        if (result<1)
        {
            $("#campaignform").submit(function(event) {
            event.preventDefault(); alert ("prevent default");
            });
        }
        else{
        return true;
        };
});

});

因此,如果您第二次尝试单击提交,则进入 $('#btn_send').click(function(),即使您在 AGE(返回结果)输入中添加了例如 67,您也会进入 IF 属性,即:if (result<1)

我对开发很陌生,所以我希望你能理解我。对不起,如果我有错误。你能建议这个问题的标题是什么更好的吗?

提前感谢,晒

        $("#campaignform").submit(function(event) {

事件处理程序添加到窗体,以便将来每次提交该处理程序时,都会调用该函数。您永远不会再次删除该事件处理程序,因此即使在更正字段后,每次提交时仍会调用默认阻止函数。

jQuery 事件处理程序可以使用 unbind 方法删除,但通常最好避免大量添加和删除处理程序。更简单 - 也更可靠,因为捕获按钮单击可能无法拾取所有表单提交 - 是在静态submit事件处理程序中执行所有操作,例如:

$('#campaignform').submit(function(ev){
    var result= calc(this);
    if (result<1) {
        ev.preventDefault();
        alert('prevent default');
    }
});