为ASP:NET webform按钮启用或禁用javascript的e.preventDefault

时间:2015-10-22 11:24:40

标签: javascript c# jquery asp.net-3.5 preventdefault

我正在研究ASP.NET 3.5 webform应用程序。我在webform中提交了按钮

   <cc1:FlatButton ID="btnSubmit" runat="server" class="positive" Text="Submit Assessment" OnClick="btnSubmit_Click" RemoveDiv="True" />

调用OnClick =&#34; btnSubmit_Click代码隐藏。

protected void btnSubmit_Click(object sender, EventArgs e)
    {
         ....

现在我有额外的要求,提供消息框,即当用户点击上面的提交按钮时出现的警告,并根据用户选项选择,表单是否提交

我的问题是如何防止基于用户选择调用代码隐藏btnSubmit_Click事件,即e.preventDefault(),当用户选择no否则继续调用btnSubmit_Click

现在,代码不会停止调用服务器代码,因为我在流程的后期调用了e.preventDefault()。

有什么方法可以实现这个暂停服务器调用???

JQuery代码

 $(document).ready(function () {

        createDialogElements();

        $("#ctl00_ContentArea_btnSubmit").click(function (e) {

           $("#WindowMessageDialog").jqxWindow('open');

           $("#messageDialog_btn_no").click(function () {

               alert("answer is no");

               e.preventDefault();
           });

           $("#messageDialog_btn_yes").click(function () {

               alert("answer is yes");
           });
        });

1 个答案:

答案 0 :(得分:2)

您可以将OnClientClick属性用于asp.net中的服务器控件。

问题是,当您单击提交按钮时,将触发 <cc1:FlatButton ID="btnSubmit" runat="server" class="positive" Text="Submit Assessment" OnClick="btnSubmit_Click" OnClientClick="if (validForSubmit) return true; else return validateForm();" RemoveDiv="True" /> 中定义的函数,其结果必须为false,以继续或取消提交。 在您的示例中,您打开一个对话框并等待用户单击,但javascript将不会停止等待来自用户的操作。

如果它是javascript中的简单验证,如必填字段,或任何预期值将非常简单。

有一些解决方案。我能想到的最简单(但不是更好)是创建一个变量来控制你的表单是否可以提交。单击提交时,它将调用一个打开对话框的javascript函数,并返回false,因此表单不会被提交。

当对话框关闭时,如果表单有效,它将提交表单。

尝试此操作,在点击时设置客户端功能:

var validForSubmit = false;

function validateForm() {
    $("#WindowMessageDialog").jqxWindow('open');

    $("#messageDialog_btn_no").click(function () {
       alert("answer is no");
       return false;
    });

    $("#messageDialog_btn_yes").click(function () {
       alert("answer is yes");
       // set form as valid for submit
       validForSubmit = true;
       // fire the click, because the form is now valid
       $("#ctl00_ContentArea_btnSubmit").click();
       return true;
    });

    return false;
}

用这个Javascript函数替换你的jQuery代码:

{{1}}

你可能需要修改一些东西,但这是想法,希望它有所帮助。

相关问题