假設我有一個母版頁,我寫了一些javascript來訪問某個特定asp.net文本框的值,該文本框位於其中的一個內容中頁面,但不是在所有頁面中。由於某些限制,這段JavaScript代碼無法移動到特定的內容頁面。如何檢查頁面中是否存在某個asp.net文本框
現在我需要一種方法來確定該文本框是否存在於頁面中,這意味着包含該文本框的內容頁面已被加載。
我怎麼能在JavaScript中做到這一點?
假設我有一個母版頁,我寫了一些javascript來訪問某個特定asp.net文本框的值,該文本框位於其中的一個內容中頁面,但不是在所有頁面中。由於某些限制,這段JavaScript代碼無法移動到特定的內容頁面。如何檢查頁面中是否存在某個asp.net文本框
現在我需要一種方法來確定該文本框是否存在於頁面中,這意味着包含該文本框的內容頁面已被加載。
我怎麼能在JavaScript中做到這一點?
var productElement = document.getElementById("<%= YourTextBoxID.ClientID%>");
if (productElement != null)
{
// Code here when the Element Exists.
}
希望有幫助!
EDIT(你澄清後):
在你的母版頁:
<% if (FindControl("YourTextBoxID") != null) {
//do smthng, you can add some jscript that should be executed, or something else you need
} %>
不,它不起作用。當我運行網站的母版頁時,會顯示一條錯誤消息,其中顯示 - 名稱'YourTextBox'在當前上下文中不存在 – 2010-02-09 13:20:21
啊......我看到... 那麼你應該使用服務器標籤以下聲明: <%if(FindControl(「YourTextBoxID」)!= null){// do smthng}%> 我覺得沒有辦法只用javascript來做,因爲你不知道什麼是ID它應該有。 – anthares 2010-02-09 13:28:47
var elem = document.getElementById('myElement');
if(elem)
{
// Do stuff when elem exists
}
凡是是undefined
或null
(在這種情況下不存在的元素)將支支吾吾假。所以,如果它存在,它就成爲真,並且if
語句將運行。
我無法使用這種方法訪問一個asp.net控件。因爲在服務器中處理控件時,它會爲其相應的html文本框分配一個新的唯一標識,只能使用 ('<%= myElement.ClientID%>')來訪問...... – 2010-02-09 13:27:41
你可以在你的內容頁面某處創建一個''元素,你可以知道這個id,然後將它的值設置爲'<%= myElement.ClientID%>'?或者,如果你使用jQuery,你可以簡單地使用通用頁面結構來縮小你想要的範圍,這樣你就可以獲得這個ID值。我對ASP一無所知,所以我沒有意識到它有這樣的尷尬功能。對不起,我的回答沒有那麼有用...... =/ – 2010-02-10 00:45:16
在客戶端,訪問控制,您需要使用控制的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()"
不,你的解決方案也行不通,對不起...... – 2010-02-09 13:25:35
如果你可以使用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的,你可以通過表單迭代.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;
}
}
看的響應後,我覺得我沒有正確陳述問題的問題進行檢查,看看,如果存在控制,是寫在母版頁這javascript函數,並且我所搜索的控件存在於其內容頁面的一個內部,所以當我瀏覽其他頁面時,控件顯然不存在,因此,當在母版頁中時,我嘗試了t o訪問該控件的客戶端id屬性,asp拋出一個錯誤.... – 2010-02-09 13:24:40