2010-02-09 52 views
2

假設我有一個母版頁,我寫了一些javascript來訪問某個特定asp.net文本框的值,該文本框位於其中的一個內容中頁面,但不是在所有頁面中。由於某些限制,這段JavaScript代碼無法移動到特定的內容頁面。如何檢查頁面中是否存在某個asp.net文本框

現在我需要一種方法來確定該文本框是否存在於頁面中,這意味着包含該文本框的內容頁面已被加載。

我怎麼能在JavaScript中做到這一點?

+0

看的響應後,我覺得我沒有正確陳述問題的問題進行檢查,看看,如果存在控制,是寫在母版頁這javascript函數,並且我所搜索的控件存在於其內容頁面的一個內部,所以當我瀏覽其他頁面時,控件顯然不存在,因此,當在母版頁中時,我嘗試了t o訪問該控件的客戶端id屬性,asp拋出一個錯誤.... – 2010-02-09 13:24:40

回答

4
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 
} %> 
+0

不,它不起作用。當我運行網站的母版頁時,會顯示一條錯誤消息,其中顯示 - 名稱'YourTextBox'在當前上下文中不存在 – 2010-02-09 13:20:21

+0

啊......我看到... 那麼你應該使用服務器標籤以下聲明: <%if(FindControl(「YourTextBoxID」)!= null){// do smthng}%> 我覺得沒有辦法只用javascript來做,因爲你不知道什麼是ID它應該有。 – anthares 2010-02-09 13:28:47

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

凡是是undefinednull(在這種情況下不存在的元素)將支支吾吾假。所以,如果它存在,它就成爲真,並且if語句將運行。

+0

我無法使用這種方法訪問一個asp.net控件。因爲在服務器中處理控件時,它會爲其相應的html文本框分配一個新的唯一標識,只能使用 ('<%= myElement.ClientID%>')來訪問...... – 2010-02-09 13:27:41

+0

你可以在你的內容頁面某處創建一個''元素,你可以知道這個id,然後將它的值設置爲'<%= myElement.ClientID%>'?或者,如果你使用jQuery,你可以簡單地使用通用頁面結構來縮小你想要的範圍,這樣你就可以獲得這個ID值。我對ASP一無所知,所以我沒有意識到它有這樣的尷尬功能。對不起,我的回答沒有那麼有用...... =/ – 2010-02-10 00:45:16

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()" 
+0

不,你的解決方案也行不通,對不起...... – 2010-02-09 13:25:35

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的,你可以通過表單迭代.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; 
    } 
} 
+0

但他必須絕對確定他所查找的ID不是任何其他控件的子字符串在他的頁面... – anthares 2010-02-09 14:05:35

+0

好點 - 它必須是唯一的 – Ray 2010-02-09 14:17:33

相關問題