2012-02-07 183 views
2

我的腳本沒有檢查的要求可以幫助我與此? 我試圖讓它在運行onclick之前運行腳本來檢查登錄是否正確。c#驗證登錄

<script type="text/javascript"> 
     function checkform() { 
     var name = document.getElementsByTagName("UserName"); 
     var pw = document.getElementsByTagName("Password"); 
      if(name.charAt(0)!='s'){ 
      document.getElementById("divMessage").innerHTML = "Please insert an S infront"; 
        return false; 
      if(pw.length< 8 && pw.length>16){ 
      document.getElementById("divMessage").innerHTML = "Please key in a longer password"; 
        return false; 
        } 

     }else{ 
     return true; 
     } 
    </script> 



<asp:Button ID="btnLogin" class="button" runat="server" CommandName="Login" 
     OnClientClick ="return checkform()" onclick="btnLogin_Click" text="Login" /> 
+0

您使用哪個版本的.net? – ivowiblo 2012-02-07 03:48:35

+0

的版本是4.0 – TransformBinary 2012-02-07 05:49:18

回答

0

當asp.net控件呈現他們有不同的ID可以被下面是產生錯誤 var name = document.getElementsByTagName("UserName"); var pw = document.getElementsByTagName("Password");

3

您正在試圖搶基於標記名的控件。這樣它也可以返回一組控件,如「document.get Elements ByTagName」元素是複數。如果你控制你正在試圖抓住:用戶名&密碼是在服務器控件的實際ID使用下面的代碼:

<script type="text/javascript"> 
    function checkform() { 
    var name = document.getElementById("<%=UserName.ClientID %>"); 
    var pw = document.getElementById("<%=Password.ClientID %>"); 
     if(name.charAt(0)!='s'){ 
     document.getElementById("divMessage").innerHTML = "Please insert an S infront"; 
       return false; 
     if(pw.length< 8 && pw.length>16){ 
     document.getElementById("divMessage").innerHTML = "Please key in a longer password"; 
       return false; 
       } 

    }else{ 
    return true; 
    } 
</script> 


<asp:Button ID="btnLogin" class="button" runat="server" CommandName="Login" 
     OnClientClick ="return checkform()" onclick="btnLogin_Click" text="Login" /> 

的用戶名&密碼的情況下是不是我的意思是一個服務器控件ASP的控制,而是其在客戶端上運行,例如它不是一個<asp:TextBox....<input ...(運行在客戶機上),你可以用用戶名和另一個密碼的值指定其id標籤,用一次更換取代:

var name = document.getElementsByTagName("UserName"); 
var pw = document.getElementsByTagName("Password"); 

有了:

var name = document.getElementById("UserName"); 
var pw = document.getElementById("Password"); 

另外,如果你想獲得它的基礎上標記名,那麼你必須去通返回的集合,並找出哪一個是你想要的控制。例如,如果只有一個具有該名稱的控件,它將是集合中從0開始的唯一項目,並且如果您更高一點,則它將超出範圍。

希望這對你有幫助。

+0

我試過調試過,它甚至沒有去我的腳本OnClientClick =「return checkform()」爲什麼? – TransformBinary 2012-02-07 04:20:15

+2

好友,你可以發佈你的整個頁面,如果你還沒有弄清楚,從上面我看不到你所有的代碼和你在做什麼。事先提醒以前不能回覆你。 – 2012-02-13 04:07:51