簡體   English   中英

如何在asp.net中調用JS函數

[英]How to call JS function in asp.net

我的問題是我想在TextBox屬性“ OnTextChanged”上調用js函數,該js函數應檢查TextBox中的文本是否正確並設置Button的可見性。

這是我的asp代碼:

...
<head runat="server">
...
<script type="text/javascript" src="<%# Page.ResolveClientUrl("Verify.js") %>"></script>
</head>
<body>
    <form id="form1" runat="server">
        <asp:TextBox ID="FirstTextBox" ClientIDMode="Static" runat="server" ></asp:TextBox>
        <asp:Button ID="AddButton" runat="server" Text="Add person" Height="23px" OnClick="AddButton_Click"/>
...
</form>
</body>

js(在另一個文件中):

function Valid()
{
    var textBox = '<%= FirstTextBox.ClientID %>';
    var acceptButton = '<%= AddButton.ClientID %>';
    var text= document.getElementById(textBox).value;
    var accept = document.getElementById(acceptButton);
    if(data correct)
    {
        do things..
    }
    else
    {
        accept.style.display = 'none';
    }
}

並在C#代碼中為TextBox設置屬性。

ClientScriptManager cs = Page.ClientScript;
cs.RegisterClientScriptInclude("Verify", "Verify.js");
this.FirstTextBox.Attributes.Add("OnTextChanged", "Valid()");

JS函數未執行,看起來程序甚至沒有放入JS函數中。 有人知道我做錯了嗎? 感謝幫助!

我認為這里有兩個問題:

  1. 沒有javascript事件OnTextChanged應根據所需的響應性將其更新為onchangeonkeypress
  2. 您的外部javascript值包含不會被評估的代碼塊,它與.NET一樣強大,因為它不會隨機解析代碼塊的資源並嘗試在當前上下文中理解它們。

考慮到您當前的設置,我認為最簡單的方法是如下更新代碼:

JS:

function Valid(textboxId, btnId){
    var textBox = textboxId;
    var acceptButton = btnId;
    var text= document.getElementById(textBox).value;
    var accept = document.getElementById(acceptButton);
    if(data correct)
    {
        do things..
    }
    else
    {
        accept.style.display = 'none';
    }
}

C#:

ClientScriptManager cs = Page.ClientScript;
cs.RegisterClientScriptInclude("Verify", "Verify.js");
this.FirstTextBox.Attributes.Add("onchange", string.Format("Valid('{0}', '{1}')",FirstTextBox.ClientID, AddButton.ClientID));

希望能有所幫助。

您應該使用onchange而不是服務器端事件OnTextChanged。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM