2012-01-09 67 views
1

在外部JavaScript文件中調用asp文本框控件在母版頁中不起作用。
對於如這是我在外部的js代碼文件document.getelementbyid在主頁面的內容頁面中無法在外部javascript中工作

function name_valid() 
{ 
    var a=document.getElementById("name_box"); 
    if(a==null || a=="") 
    { 
    alert('Enter the name'); 
    } 

    var b=document.getElementById("dob_box"); 
    if(b==null || b=="") 
    { 
    alert('Enter the Date Of Birth'); 

    } 
} 

內容頁: 內容佔位符(頭):

<script src="valid.js" type="text/javascript" language="javascript" ></script> 

contentplaceholder1:

<asp:TextBox ID="name_box" runat="server" ></asp:TextBox> 

<asp:Textbox Id="dob_box" runat="server"></asp:TextBox> 
<asp:Button ID="submit_button" runat="server" Text="Submit" OnClientClick="name_valid()"/> 

這裏的JavaScript執行要麼名稱文本框爲空或者輸入一些名字 請幫我解決這個問題

+0

在你的javascript代碼中有一個錯誤,因爲變量'a'沒有被定義,只是讓你知道。 – 2012-01-09 19:32:05

回答

3

確保您的JavaScript文件在HTML之後加載。這可能是因爲你的JavaScript試圖在ID存在於頁面之前引用它。

或者確保在文檔準備就緒後執行JavaScript。如果你不使用庫,你應該看看jQuery是如何做到的。

+0

只在內容頁面中佔位符頭部tad和內容位置holde體標籤只出口 – Partha 2012-01-09 19:20:58

0

不要忘了與</script>

首先關閉您的JS代碼,您沒有說明風險價值。

您是否試圖將此功能放入您的網頁中進行測試?

content place holder(head): 

<script type="text/javascript" language="javascript"> 
     // your function 
</script> 

最後一件事,而不是與你的ASP代碼舒爾,但我不認爲document.getElementById("dob_box");將返回輸入的值,使用document.getElementById("dob_box").value;來代替。

//編輯:

看來,隨着輸入你的ASP腳本的名稱(和/或ID)的改變,這樣的事情:

do_box >> ctl00_ContentPlaceHolder_do_box

您可能知道生成的真實姓名/編號輸入來測試它們。 所以,你應該做這樣的事情知道他們:

function name_valid() 
{ 
    var values=null; 
    for(id in document.forms[0].elements) 
    { 
     realName=document.forms[0].elements[id].name; 
     realId=document.forms[0].elements[id].id; 
     value=document.forms[0].elements[id].value; 
     values+=id+' : '+realId+' : '+realName+' : '+value+'\n'; 
    } 
    alert(values);  
} 
+0

如果將'src'屬性設置爲腳本,則不能在'

0

我自己遇到了這個問題。我在控制檯中看到一條錯誤消息:

"TypeError: document.getElementById(...) is null" 

您是否有此錯誤?如果是這樣,你的頁面還沒有生成HTML,你需要把你的JS鏈接放在HTML之後。 PS:我會剛剛在Seth的回答下評論這個,但我沒有足夠的聲望點在這個網站上。對不起堆棧溢出:(

相關問題