0

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

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

注意:年龄输入值,从不同的函数(calc)返回到一个名为:result 的 var。

这是代码:

$(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 atatement 即:if (result<1)

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

在此先感谢, 谢

4

1 回答 1

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

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

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

$('#campaignform').submit(function(ev){
    var result= calc(this);
    if (result<1) {
        ev.preventDefault();
        alert('prevent default');
    }
});
于 2011-05-21T14:19:13.630 回答