假设我有一个母版页,我在其中编写了一些javascript来访问特定asp.net文本框的值,该文本框位于其中一个内容页面中,但不在所有页面中。由于某些限制,这条javascript代码无法移动到该特定内容页面。
现在我需要一种方法来确定页面中是否存在该文本框,这意味着已加载包含该文本框的内容页面。
我如何在javascript中执行此操作?
答案 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
}
undefined
或null
(在这种情况下,不存在的元素)的任何内容都将变为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;
}
}