asp.net jquery如何使用插件/验证与Web内容

时间:2010-03-13 21:49:51

标签: asp.net jquery-plugins

我有一个asp.net网页内容,有一个asp.net文本框,我想使用插件/验证,但它不能与我合作这里是我的代码:

<%@ 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>

1 个答案:

答案 0 :(得分:0)

我不确定问题是什么,因为这并没有告诉我“不工作”。

只是查看我试图看到的代码可能会导致它无法正常工作。

首先,您没有将validate方法连接到任何表单。我认为如果不将其连接到表单标签就可以运行它。

// 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”,它就是名字。或者在考试中你看到他们将其命名为“数学”

接下来你会做这样的事情

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

所以我会这样的。您可以将textboxId放在表单的validate方法中,然后在该id中调用.addMethod。在我的情况下,我使用名为“math”的.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>

所以试试这个是否足以将其挂起来。