为什么asp.net mvc表单会在javascript函数错误时按下按钮?

时间:2010-04-11 13:10:16

标签: jquery asp.net asp.net-mvc form-submit

我是asp.net mvc的新手, 在研究这个时,我使用了非常基本的asp.net mvc之类的东西,比如beginform等。

我在本轮使用了很多jquery代码进行客户端验证,ajax数据检索和其他gui工作。

我使用了html输入按钮等组合以及asp.net mvc类型的控件。 我注意到的是,无论何时我点击一个按钮控件,它有时与jquery oclick事件相关联,当出现javascript错误时,页面将继续并提交。

为什么会发生这种情况,我在这里缺少什么?

我对愚蠢的问题不好 谢谢

更新

在四处寻找之后,我想我可能已经找到了原因...... 可能是因为我把一些jquery事件处理程序放在另一个函数中并且没有返回false?

function eventHandling() {
    //initialize controls
    $(".dobPicker").datepicker({
        changeMonth: true,
        changeYear: true,
        yearRange: '-100:+0'
    });

    $("a#hrefCountry").fancybox({
        'titlePosition': 'inside',
        'width': '75%',
        'height': '75%'
    });

    //Event handlers part
    $("#imgbtnClear").click(function() {
        clearForm("#frmProductRegistration");
        return false; // like this guy weren't there initially <-- ??
    });

如果这是根本原因,为什么? 小心分享:)

3 个答案:

答案 0 :(得分:2)

它似乎在这里,当你触发imgbtnClear,并且从你说的话,ClearForm失败,然后它的返回,没有错误,所以输入按钮,你放置清楚,提交表单!,因为< strong>永远不会得到回报。

也许你这样做......

$("#imgbtnClear").click(function() {
        try{
          clearForm("#frmProductRegistration");
        }catch(e){}

        return false; // like this guy weren't there initially <-- ??
    });

答案 1 :(得分:0)

如果在clearForm()函数中发生javascript异常,则执行将暂停,并且您的脚本将永远不会“返回false”,这是防止表单发布所必需的。

为确保您的脚本始终“返回false”,您可以将clearForm()函数包装在try / finally块中:

try {
    clearForm("#frmProductRegistration");
}
catch(e){} //so it works in IE
finally {
    return false;
}

答案 2 :(得分:0)

只有当你从附加到onclick事件的函数返回false时才会提交表单,但是你没有因为异常而返回,所以无论如何它都会被提交。

你回来了什么?我猜这不确定,但我不确定。您可以使用firebug来调试它。