如何检查页面中是否存在某个asp.net文本框

时间:2010-02-09 11:56:05

标签: asp.net javascript

假设我有一个母版页,我在其中编写了一些javascript来访问特定asp.net文本框的值,该文本框位于其中一个内容页面中,但不在所有页面中。由于某些限制,这条javascript代码无法移动到该特定内容页面。

现在我需要一种方法来确定页面中是否存在该文本框,这意味着已加载包含该文本框的内容页面。

我如何在javascript中执行此操作?

4 个答案:

答案 0 :(得分:4)

var productElement = document.getElementById("<%= YourTextBoxID.ClientID%>");
if (productElement != null)
{
// Code here when the Element Exists.
}

希望有所帮助!

编辑(在您澄清之后):

在您的母版页中:

<% if (FindControl("YourTextBoxID") != null) {
     //do smthng, you can add some jscript that should be executed, or something else you need
} %>

答案 1 :(得分:1)

var elem = document.getElementById('myElement');
if(elem)
{
    // Do stuff when elem exists
}

undefinednull(在这种情况下,不存在的元素)的任何内容都将变为false。因此,如果它存在,它就变为真,if语句将运行。

答案 2 :(得分:1)

在客户端,要访问控制,您需要在内容页面中使用ClientID控件属性

<script type="text/javascript">
var control = document.getElementById("<%=YourControl.ClientID%>")
</script> 

在母版页上,您的代码应为

<script type="text/javascript">
function IsTextBoxExist(){
   if(control != null){
    ...
   }

}
</script>

确保在页面加载完成时IsTextBoxExist调用。像

<body onload="isTextBoxExist()"

答案 3 :(得分:1)

如果您可以使用jQuery,则可以使用“Attribute Contains Word”选择器。假设您的服务器端文本框ID为“text_box”。客户端“名称”属性将包含服务器端ID(类似于“ctl00 $ ctl00 $ text_box”)。因此,要选择它,请使用:

var textBox = $("input[name~=text_box]");
if (textBox.length != 0) {
  // text box found - do something here
}

如果没有jQuery,您可以遍历form.elements集合并测试每个名称:

for (var i; i++; i < forms[0].elements.length) {
  if (forms[0].elements[i].name.indexOf("text_box") != -1) {
    // text box found - do something here
    break;
  }
}