2010-03-13 47 views
0

我有一個asp.net的網頁內容,有一個asp.net文本框,我想使用插件/驗證,但它不與我合作在這裏是我的代碼:asp.net jquery如何使用與網頁內容插件/驗證

<%@ Page Title="" Language="C#" MasterPageFile="~/Master.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="IMAM_APPLICATION.WebForm1" %> 
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 


    <script src="js/jquery-1.4.1.js" type="text/javascript"></script> 

    <script src="js/jquery.validate.js" type="text/javascript"></script> 


    <script type="text/javascript"> 

     $(document).ready(function() { 
     $.validator.addMethod("#<%=TextBox1.ClientID %>", function(value, element) { 
      return this.optional(element) || /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,16}$/i.test(value); 
     }, "Passwords are 8-16 characters with uppercase letters, lowercase letters and at least one number."); 
}); 

    </script> 

</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
</asp:Content> 
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder2" runat="server"> 

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



</asp:Content> 
+0

我會說「不工作」是從來沒有**一個很好的描述。 **什麼**不起作用?你得到什麼錯誤或行爲? – 2010-03-13 22:02:15

+0

如果我輸入錯誤輸入沒有反應....所以沒有錯誤也沒有結果。 – Eyla 2010-03-13 22:18:56

回答

0

那麼我不確定是什麼問題,因爲這並沒有告訴我太多「不工作」。

只看你的代碼,我想看看可能會導致它不工作。

首先你沒有驗證方法掛鉤到任何形式。我不認爲你可以運行它,而不需要將它連接到表單標籤。

// from the validation documentation 
$("#commentForm").validate(); 

注意它們如何綁定驗證字段。

下一頁

我覺得你做你的.addMethod錯誤

 $(document).ready(function() { 
     $.validator.addMethod("#<%=TextBox1.ClientID %>", function(value, element) { 
      return this.optional(element) || /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,16}$/i.test(value); 
     }, "Passwords are 8-16 characters with uppercase letters, lowercase letters and at least one number."); 
}); 

你所擁有的是上面,但如果你看看文檔。

addMethod(name, method, [message]) 

    jQuery.validator.addMethod("math", function(value, element, params) { 
    return this.optional(element) || value == params[0] + params[1]; 
    }, jQuery.format("Please enter the correct value for {0} + {1}")); 

看看第一個參數如何是「名稱」而不是「id」。名稱就像這個新方法的名稱。

所以這addMethod可以被稱爲「Test101」,這將是名稱。或者像在examle你看他們把它命名爲「數學」

接下來你會做這樣的事情

$("#commentForm").validate 
(
    rules: 
     { 
      txtBoxIdName: 
      { 
       math: true; 
      } 
     } 
); 

所以會我這樣的事情。你可以將textboxId放在表單的validate方法中,然後在該id內調用你的.addMethod。在我的情況下,我使用了名爲「數學」的.addMethod,我相信你只需將它設置爲「true」即可使其運行。

我沒有測試過這個,所以我會嘗試找到一些實際運行的例子。

編輯

這裏是母版頁。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <asp:ContentPlaceHolder id="head" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"> 

     </asp:ContentPlaceHolder> 
    </div> 
    </form> 
</body> 
</html> 

看到它有一個表單ID,當你把這個母版頁連接到一個aspx頁面時,你應該有這個。

<title> 

    </title> 
    <script>try { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig)=="undefined"){  if (typeof(lastpass_f.submit) == "function") {  lastpass_f.lpsubmitorig = lastpass_f.submit;  lastpass_f.submit = function(){   var form = this;   try {   if (document.documentElement && 'createEvent' in document)   {    var forms = document.getElementsByTagName('form');    for (var i=0 ; i<forms.length ; ++i)    if (forms[i]==form)    {     var element = document.createElement('lpformsubmitdataelement');     element.setAttribute('formnum',i);     element.setAttribute('from','submithook');     document.documentElement.appendChild(element);     var evt = document.createEvent('Events');     evt.initEvent('lpformsubmit',true,false);     element.dispatchEvent(evt);     break;    }   }   } catch (e) {}   try {   form.lpsubmitorig();   } catch (e) {}  }  } } }} catch (e) {}</script></head><body> 



     <form name="aspnetForm" method="post" action="Default2.aspx" id="aspnetForm"> 


<div> 
    <input name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTY1NDU2MTA1MmRkJ6rATKUz8lX/wrHNVcM8o9fwof8=" type="hidden"> 
    </div> 

     <div> 



     </div> 
     </form> 
    </body></html> 

因此,請嘗試,如果這將足以讓它掛鉤。

+0

感謝您的回覆。 在我的情況我正在使用asp.net文本框和內部網頁內容,所以在我的情況下,我沒有任何形式! 有什麼建議? – Eyla 2010-03-13 22:45:24

+0

你應該有一個表格。即使你使用母版頁。你應該有一個超級表單標籤。生成時只需檢查頁面上的html代碼 – chobo2 2010-03-13 22:49:14