与asp.net的jquery验证器

时间:2011-05-25 20:39:35

标签: jquery asp.net

我需要了解如何通过jquery获取对象asp的访问权限,因为我有一个文件,它在我的aspx后面的代码的页面加载中注册,脚本需要进行验证,我在不同的读取我可以使用此<%=txtName.UniqueID %>执行此操作的网站但不起作用我将放置我的代码,任何人都可以帮助我。感谢

在脚本文件中触发验证此方法的按钮

    <asp:Button ID="btnOk" CssClass="btnOk" runat="server" Text="Ok" /> 

js

$(".btnOk").click(validateData);

function validateData() {

$("form").validate({
    rules: 
    {
        '<%=txtName.UniqueID %>': "required"        
    }
});
}

我的代码背后我注册了脚本

ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript", "<script language=javascript src='js/SetIndicators.js'> </script>");
ClientScript.RegisterClientScriptBlock(this.GetType(), "Validator", "<script language=javascript src='js/jquery.validate.js'> </script>");

更新

这是我需要验证的文本输入

<asp:TextBox ID="txtLayerName" CssClass="txtLayerName" runat="server"> </asp:TextBox>

使用'<%=txtName.UniqueID %>'<%=txtName.UniqueID %>也无法使用'.txtLayerName'

更新2

这是asp

的渲染名称
<input name="ctl00$ContentPlaceHolder1$txtLayerName" type="text" id="ctl00_ContentPlaceHolder1_txtLayerName" class="txtLayerName required" />

4 个答案:

答案 0 :(得分:2)

我想你想要:

'<%= txtLayerName.ClientID %>': "required"

另外,请记住,您可以使用CSS类而不是像这样定义规则,这样更容易一些。 E.g:

<asp:TextBox ID="txtLayerName" CssClass="txtLayerName required" runat="server" />

答案 1 :(得分:1)

我使用jQuery的"ends with" selector运气好,因为控件的服务器端ID始终是客户端ID字符串的最后一位。

例如,您的按钮的客户端ID可能类似于“ctl00 $ foo $ bar $ btnOk” 然后你的jQuery将是:

$("[id$=btnOk]").click(validateData);

然后你可以用TextBox做同样的事情。

rules: 
{
    $("[id$=txtLayerName]").attr("id") : "required"        
}

更新:

试试这个:

rules = {};
rules[$("[id$=txtLayerName]").attr("id")] = "required";

由于对象本质上只是对元素具有直接命名访问权限的数组,因此您可以创建一个数组并将其用作对象。

答案 2 :(得分:1)

jquery使用html输入的NAME属性验证,而不是ID。我使用webforms已经有一段时间了,所以我不知道名字和id是否匹配。但它可能值得研究。

编辑:我已经添加了验证,并取得了巨大的成功:

    $(function(){
       $("form").validate(); 

       $('.txtLayerName').each(function () {

            //add the required validator to these!
            $(this).rules('add', {required: true});

        }); 
    });

答案 3 :(得分:0)

这确实有用,因为我正在使用它,但我猜我'<%=txtName.UniqueID %>'不需要''来工作......

如果您使用的是.NET 4且拥有clientIDMode = Static,您还可以使用以下脚本,并像往常一样使用这些名称。

    $("#aspForm input:not(:hidden)").each(function () {
        var i = $(this).get(0);
        i.name = i.id;
    });