2011-10-14 157 views
1

在我的login.aspx我試圖執行簡單的客戶端驗證(檢查用戶名和密碼字段是否爲空)點擊按鈕。但jquery中的.click()並沒有觸發。我哪裏錯了。.click()不起作用。 jquery

注意:我有一個事件LoginButton_點擊後面有一些功能的代碼。

<script src="Scripts/Login.js" type="text/javascript"></script> 

<td align="right" colspan="2"> 
    <asp:Button ID="LoginButton" runat="server" Text="Log In" 
     onclick="LoginButton_Click" class ="validateForm" /> 
</td> 

我login.js文件:

$(function() { 

    $('#LoginButton').click(function() { 

      var username = $('#txtUserName'); 
      var pwd = $('#txtPassword'); 
      if (username.val().length <= 0) { 
       alert("User Name is required."); 
       return false; 
      } 
      if (pwd.val().length <= 0) { 
       alert("Password is required."); 
       return false; 
      } 

     }); 
}); 

在此先感謝

BB

+0

它與C#有關嗎?刪除C#標記... –

+1

如果您發佈了瀏覽器實際看到的內容(服務器處理後),而不是頁面的ASP版本,則更多人可以提供幫助。 – jfriend00

+0

@ jfriend00事實證明,這也將是瀏覽器看到的,因爲他不正確地使用未經過asp.net處理的文件中的asp.net標記 –

回答

1

我想你想的OnClientClick

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.onclientclick.aspx

以防萬一有人在那裏在乎...

<script src="Scripts/Login.js" type="text/javascript"></script> 

<td align="right" colspan="2"> 
    <asp:Button ID="LoginButton" runat="server" Text="Log In" 
     onclick="LoginButton_Click" onclientclick="validateLogin()" class ="validateForm" /> 
</td> 

login.js文件:

function validateLogin() { 

      var username = $('#txtUserName'); 
      var pwd = $('#txtPassword'); 
      if (username.val().length <= 0) { 
       alert("User Name is required."); 
       return false; 
      } 
      if (pwd.val().length <= 0) { 
       alert("Password is required."); 
       return false; 
      } 

      return true; 
} 
+0

不正確。他試圖使用jQuery來設置客戶端代碼。 –

+0

Fine and $(「#LoginButton」)voila – mikey

+0

我正在使用jQuery。我不認爲我需要有OnClientClick – BumbleBee

4

$("#<%= LoginButton.ClientID %>")不會對外部JavaScript文件。如果您想使用外部文件,請在aspx文件中創建一個全局變量並在JavaScript文件中訪問它。


編輯:

創建aspx文件全局變量。

var loginButtonId = <%= LoginButton.ClientID %>;

使用它的JavaScript文件

$("#" + loginButtonId).click(function() {...}); 

注:變量添加引用的JavaScript文件之前,應該申報。

+0

我改變爲$('#LoginButton')。click(function()now我得到「Microsoft JScript運行時錯誤:對象預期」 – BumbleBee

+0

@BumbleBee參考更新的答案 –

1

因爲在你的.js文件,javascript中無法讀取的這個值:$("#<%= LoginButton.ClientID %>")
您需要: - 將這個代碼在你的HTML頁面的結尾。

- 將在js一個固定的選擇文件

2

這應該不會給你任何問題,我們利用通過與LoginButton結束其id屬性中選擇jQuery選擇。

$(function() { 
    $("input[id$=LoginButton]").click(function() { 

      var username = $("input[id$=txtUserName]"); 
      var pwd = $("input[id$=txtPassword]"); 
      if (username.val().length <= 0) { 
       alert("User Name is required."); 
       return false; 
      } 
      if (pwd.val().length <= 0) { 
       alert("Password is required."); 
       return false; 
      } 

     }); 
}); 
+0

謝謝。我得到了「Microsoft JScript運行時錯誤:對象預期」。我嘗試了這裏提到的所有解決方案,但是我得到了同樣的錯誤。 – BumbleBee

+0

我不好意思忘了以相同的方式選擇用戶和密碼元素,現在就試試。 –

1

#LoginButton不存在。當asp按鈕被渲染時,它將被渲染成與包含它的ASP控件相關的專用ID,如ctrl00_mycontrol_panelid_LoginButton。你需要爲了把這個變成一個外部文件做的是使用全局變量:包括該登錄文件中

var loginButtonID; 
var txtUserNameID; 
var txtPasswordID; 

$(function() { 

    $(loginButtonID).click(function() { 

      var username = $(txtUserNameID); 
      var pwd = $(txtPasswordID); 
      if (username.val().length <= 0) { 
       alert("User Name is required."); 
       return false; 
      } 
      if (pwd.val().length <= 0) { 
       alert("Password is required."); 
       return false; 
      } 

     }); 
}); 

然後。js文件,你需要通過調用來設置這些變量:

<script type="text/javascript"> 

loginButtonID = '<%=LoginButton.ClientID%>'; 
txtUserNameID = '<%=txtUserName.ClientID%>'; 
txtPasswordID = '<%=txtPassword.ClientID%>'; 

</script> 

一定不要用新的「變種」修飾符重複聲明這些。這可能會破壞範圍並搞砸你的腳本。

+0

謝謝,我得到了「Microsoft JScript運行時錯誤:對象預期」 – BumbleBee

+1

@Bumblebee:這意味着你沒有正確提供客戶端ID,你應該設置一些警報或使用螢火蟲來確定有問題的JavaScript變量的狀態。 –