传递文本框的ClientId以在javascript函数中使用它

传递文本框的ClientId以在javascript函数中使用它,javascript,asp.net,visual-studio-2010,Javascript,Asp.net,Visual Studio 2010,这是我的控制: <asp:TextBox ID="txt_rol" onkeyup="this.value=this.value.toUpperCase()" runat="server" BorderColor="#E0E0E0" BorderStyle="Solid" Width="240px"></asp:TextBox> </strong> <asp:ImageB

这是我的控制:

 <asp:TextBox ID="txt_rol" onkeyup="this.value=this.value.toUpperCase()"  runat="server" BorderColor="#E0E0E0" BorderStyle="Solid" Width="240px"></asp:TextBox>
                    </strong>
                    <asp:ImageButton ID="imgBtnGuardar" runat="server" ImageUrl="~/imagenes/boton.guardar.jpg"  OnClientClick="ValidaCajadeTextoVacia(document.getElementById('<%=txt_rol.ClientId%>'));MensajeCargandoJQUERY();"/>




问题是,我无法获取文本框的Id。

好吧,我可以马上告诉您代码中存在语法问题。应该是:

'<%= txt_rol.ClientID %>'
“”
在这里,您可能还需要克服其他障碍。例如,如果这些控件嵌套在
GridView
中,则无法以这种方式引用该控件

function masterClick(clicked, controlID) {
    var dynCtrl = clicked.id.substring(0, clicked.id.lastIndexOf("_") + 1);
    var tBox = document.getElementById(dynCtrl + controlID);
    tBox.value = "";
    tBox.focus();
}
然后从图像按钮调用,如

masterClick(this,'txt_rol');

将tBox.value和focus更改为您喜欢的任何操作,但现在应该可以访问JavaScript中的控件。您可以添加一个类似“if(tBox)”的检查,以确保您拥有一个对象。缺点是内联javascript中对控件的静态引用,当调用控件位于不同的容器、网格、面板等中时,您必须进行调整。

使用View Source检查输出,您将了解发生了什么。您必须设置
OnClientClick
属性服务器端(
onload
)。或者找到一种方法来绑定它
OnClientClick='

另一个选项是使用jQuery查找控件:

$("input:text[id*=txt_rol]")

顺便说一句:如果有人用鼠标(右键单击/粘贴)在文本框中粘贴,你的JavaScript将无法工作。

我没有使用gridview,我只是使用母版页,而在marterpage中是我试图获取clientId的表单,问题是当我尝试使用“”时,我甚至都没有自动完成。这不是我想要的,但它很有帮助。