如何从服务器端

时间:2017-06-20 05:38:29

标签: javascript c# asp.net

我的页面中有一个按钮,如果条件匹配,其click事件将执行某些代码,否则它会要求确认是否继续。我有一个javascript函数进行确认,如下所示。

<script type="text/javascript">

            function getConfirmation(){
               var retVal = confirm("Do you want to continue ?");
               if( retVal == true ){

                  return true;
               }
               else{

                  return false;
               }
            }

      </script>
<asp:Button runat="server" ID="lnkBtn" onClick="lnkBtn_Click" onClientClick="getConfirmation()"></button>

背后的代码如下所示:

   void lnkBtn_Click(Object sender, EventArgs e)
    {
        if (txtMyText.Text!="")
        {
        ///need confirmation here whether to continue.  
        }
        else
        {
        //continue with normal code.    
        }
    }   

现在的问题是,即使不满足条件,单击按钮时也会触发confirm()。我希望confirm()仅在满足条件时触发。请帮我这样做。

在期待中感谢你。

我尝试了两种解决方案,但似乎我在某处犯了一个错误。我附上下面的完整代码。请您帮助我找出我错在哪里以及如何解决它。

<script type="text/javascript">
        function Confirm() {
            var confirm_value = document.createElement("INPUT");
            confirm_value.type = "hidden";
            confirm_value.name = "confirm_value";
            if (confirm("This will completely delete the project. Are you sure?")) {
                confirm_value.value = "Yes";
            }
            else {
                confirm_value.value = "No";
            }
            document.forms[0].appendChild(confirm_value);
        }
    </script>

<asp:Button runat="server" ID="lnkBtn" onClick="lnkBtn_Click" onClientClick="getConfirmation()"></button>

代码背后:

protected void ibExport_Click(object sender, ImageClickEventArgs e)
        {
            string str=gdView.HeaderRow.Cells[8].Text;
            System.Web.UI.WebControls.TextBox txtID = (System.Web.UI.WebControls.TextBox)gdView.Rows[0].Cells[8].FindControl(str);
            if (txtID.Text != "")
            {
                string confirmValue = Request.Form["confirm_value"];
                if (confirmValue == "Yes")
                {
                    MyAlert("Yes clicked");
                }
                else
                {
                    MyAlert("No clicked");
                }
            }
            else
            {
                MyAlert("No Text found.");
            }
        }

使用txtID.Text!=“”单击ibExport时,不会显示确认对话框。而是直接弹出“No clicked”警告。

2 个答案:

答案 0 :(得分:1)

非常接近,在内联点击处理程序中使用return语句。

onClientClick="return getConfirmation()"

而不是

onClientClick="getConfirmation()"

此外,if功能中的getConfirmation阻止是多余的

function getConfirmation() {
    return confirm("Do you want to continue ?");
}

答案 1 :(得分:-1)

删除您的Javascript。而是在Backend中使用此功能进行按钮点击事件。

void lnkBtn_Click(Object sender, EventArgs e)
    {
        if (txtMyText.Text!="")
        {
             Response.Write("<script> function getConfirmation()"
            +" { var retVal = confirm('Do you want to continue ?');"
            +" if( retVal == true )"
            +" { return true; } else{ return false;} }"
            +" </script>");
        }
        else
        {
        //continue with normal code.    
        }
    }