根据条件从代码隐藏调用Javascript方法。

时间:2012-06-28 06:10:53

标签: c# javascript jquery asp.net

这是我在.aspx文件中的javascript方法。我想根据特定条件从代码隐藏中调用此方法:

function confirmboxAndHideMessage() {
    //HideMessage();
    var response = confirm("are you sure?.");
    if (response == true) {
        document.getElementById("<%=chkValidated.ClientID%>").checked = true;
        HideMessage();
    }
    else {
        HideMessage();
        return true;
    }
}

我想要调用的条件是这样的:

        if (obj.fkValidationStatusId.HasValue && obj.fkValidationStatusId.Value.Equals(1))
        {
            btnProceedAddNewRecords.Attributes.Add("OnClick", "javascript:return confirmboxAndHideMessage();");  
        }
        else
        {
            btnProceedAddNewRecords.Attributes.Remove("OnClick");
        }

这个条件正在一个在

中的PageLoad事件中调用的方法中运行
if (!IsPostBack) { /* condition */ }

它不起作用,我的猜测是我在按钮属性中添加方法的方式是错误的。我的要求是,请建议一种方法,我可以根据规定的条件从我的代码隐藏中调用这个javascript方法。如果您认为我的方法有缺陷,请建议替代方案。感谢。

3 个答案:

答案 0 :(得分:1)

只需在条件类似的地方添加以下代码

 public void test()
{
    String name = "test";
    if (name == "test")
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "hdrEmpty", "if(confirm('are you sure you want to continue?')==true){ Testfunction(); };", true); return;
    }
}

我相信它会对你有用。

答案 1 :(得分:1)

用于设置/取消设置OnClientClick

if (obj.fkValidationStatusId.HasValue && obj.fkValidationStatusId.Value.Equals(1))
  {
     btnProceedAddNewRecords.OnClientClick="return confirmboxAndHideMessage();";  
  }
else
  {
     btnProceedAddNewRecords.OnClientClick="retun false;";
  }

答案 2 :(得分:1)

您应该从该功能返回truefalse。您可能希望返回true以获得积极响应:

function confirmboxAndHideMessage() {
  var response = confirm("are you sure?.");
  if (response == true) {
    document.getElementById("<%=chkValidated.ClientID%>").checked = true;
    HideMessage();
    return true;
  } else {
    HideMessage();
    return false;
  }
}

对事件名称使用小写(因为XHTML很挑剔),并从代码中删除javascript:

btnProceedAddNewRecords.Attributes.Add("onclick", "return confirmboxAndHideMessage();");

将设置属性的代码放在IsPostBack的检查之外,否则在条件更改时不会更新。