Javascript JS var声明-由于变量具有相同值的函数问题,验证错误

Javascript JS var声明-由于变量具有相同值的函数问题,验证错误,javascript,function,preventdefault,Javascript,Function,Preventdefault,我正在对表单文本输入进行验证。 如果用户将输入留空,则函数将开始运行。如果字段大于1,那么它不会进入函数 问题是: 第一次,用户将输入留空,函数运行,我得到了警报-没关系。 第二次,用户在年龄输入中添加了10,他再次得到警告,但他不应该这样做 注: 年龄输入值,从另一个函数calc返回一个名为:result的变量 代码如下: $(document).ready(function(){ $('#btn_send').click(function(){ //var result gets t

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

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

注: 年龄输入值,从另一个函数calc返回一个名为:result的变量

代码如下:

$(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;
        };
});
})

因此,如果您第二次尝试单击Submit,则进入$'btn_send'。单击函数和事件尽管您在年龄返回中添加了例如67作为结果输入,但进入了if数据项,即:if result 将事件处理程序添加到表单中,以便以后每次提交时都会调用该函数。您再也不会删除该事件处理程序,因此即使在更正该字段后,每次提交时仍会调用默认的阻止函数

可以使用该方法删除jQuery事件处理程序,但通常最好避免大量添加和删除处理程序。更容易,也更可靠,因为捕捉按钮点击可能无法拾取所有表单提交,所以在一个静态提交事件处理程序中完成所有操作,例如:

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