如何从jquery文件访问母版页文本框?

时间:2010-06-14 10:09:54

标签: jquery master-pages

在我的母版页中,我有一个文本框。

 <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";
    }

当我运行我的应用程序时,我的对象引用没有设置错误。

请告诉我在哪里需要更改我的代码。

3 个答案:

答案 0 :(得分:1)

为了使用id选择器访问元素,在命名容器中你必须使用ClientID,而在js文件中你将无法使用它。所以最好尝试使用类名来获取元素,比如

$("input:text.searchtxtbox")

答案 1 :(得分:1)

您需要在Master页面上调用FindControl:

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

Have a look here

答案 2 :(得分:0)

使用id选择器访问元素,在命名容器中你必须使用ClientID,在js文件中你将无法使用它。所以最好尝试使用类名来获取元素,比如

$( “输入:text.searchtxtbox”)

链路