2010-06-14 86 views
1

在我的母版頁中我有一個文本框。如何從jquery文件訪問母版頁文本框?

<asp:TextBox ID="SearchTextBox" runat="server" class="searchtxtbox" onfocus="HideSearchWaterMark();" Text="Search" onblur="ShowSearchWaterMark(this);" /> 

我在代碼中加入jQuery的引用後面。

TextBox SearchTextBox = this.FindControl("SearchTextBox") as TextBox; 
      StringBuilder objStringBuilder = new StringBuilder(); 
      objStringBuilder.Append("<script type=\"text/javascript\" language=\"javascript\">\n"); 
      objStringBuilder.AppendFormat("var searchTextBox = '{0}';\n", SearchTextBox.ClientID); 
      objStringBuilder.Append("</script>\n"); 
      this.Page.ClientScript.RegisterClientScriptBlock(GetType(), "RegisterVariables", objStringBuilder.ToString()); 
this.Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "Global", this.ResolveClientUrl("~/Resources/Scripts/Search.js")); 
this.Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "Global", this.ResolveClientUrl("~/Resources/Scripts/jquery-1.4.2.js")); 
this.Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "Global", this.ResolveClientUrl("~/Resources/TagsScripts/jquery.autocomplete.js")); 

在Search.js 我下面的方法來訪問母版頁的文本框:

$(document).ready(function() { 
      $("#" + searchTextBox).autocomplete("Handlers/GenericHandler.ashx?tgt=12", { 
       multiple: true, 
       multipleSeparator: ";", 
       mustMatch: false, 
       autoFill: true 
      }); 
     }); 


     function HideSearchWaterMark() { 

    var control = $("#" + searchTextBox); 
    if (control[0].className == "searchtxtbox ac_input") 
     control[0].value = ""; 

    control[0].className = "searchtxtbox ac_input"; 
} 

function ShowSearchWaterMark(tagsTextBox) { 
    if (searchTextBox.value.length == 0) { 
     searchTextBox.value = "Search"; 
     searchTextBox.className = "searchtxtbox ac_input"; 
    } 

當我運行我的應用程序我得到的對象引用未設置錯誤。

請告訴我在哪裏需要更改我的代碼。

回答

1

爲了使用id選擇器訪問元素,在命名容器中必須使用ClientID,並且在js文件中,您將無法使用它。所以,最好嘗試使用類名來獲取元素,像

$("input:text.searchtxtbox") 
+1

它的正常工作爲我的情景。非常感謝。 – stackuser1 2010-06-17 07:38:01

1

你需要調用的FindControl母版頁上:

TextBox SearchTextBox = MasterPage.FindControl("SearchTextBox") as TextBox; 

Have a look here

0

norder訪問使用ID元素選擇器,在一個命名容器中你必須使用ClientID,並且在一個js文件中你將不能使用它。因此,更好地試圖讓使用類名,一些元素像

$(「輸入:text.searchtxtbox」)

鏈接