jQuery.validate.js和asp.net母版页

dig*_*uru 1 asp.net jquery jquery-validate

我在各种文件中都有jQuery,最近我需要更改母版页中的项目.这导致各种jaavscript包括停止工作.Stackoverflow 提出了解决有关get by ID选择器问题的好主意.

$("#ctl00_ContentMainPane_eliteUser").html
Run Code Online (Sandbox Code Playgroud)

但是我有一个问题,我们使用jquery.validate.js来验证表单控件,所以在外部 JS文件中有这样的代码

$(document).ready(function(){ 
    $("#aspnetForm").validate({
        rules: 
    {
        ctl00$ContentMainPane$txtFirstName:
        {
            required:true,
            CheckAlfaNumeric:true
        },
        ctl00$ContentMainPane$ctl00$ucRFI$txtComments:
        {
            required:true
        }                       

    },
    messages:
    {
        ctl00$ContentMainPane$txtFirstName: 
        {
            required:" Please enter first name"
        },
        ctl00$ContentMainPane$ctl00$ucRFI$txtComments:
        {
            required:" Please enter comments."
        }
    }
    });
    $("#" + GetPlaceholder() + "txtFirstName").blur(function(){
            $("#" + GetPlaceholder() + "txtFirstName").valid();
    });
    jQuery.validator.addMethod("CheckAlfaNumeric", function(value, element) {
            return this.optional(element) || /^[A-Za-z\ ]+$/i.test(value);
    }, " Please enter alphabet.");
});
Run Code Online (Sandbox Code Playgroud)

如果由于母版页被修改而名称恰好发生变化,是否知道如何防止属性的名称问题?

veg*_*rby 5

等待.NET 4.0,它允许您准确指定应如何构造ID;)

说真的:AFAIK可以手动创建规则,做类似的事情(JS对象只是属性的"数组"):

var myRules = new Object();
myRules[GetPlaceholder() + "txtFirstName"] = { required:true, CheckAlfaNumeric:true };

var myMessages = new Object();
myMessages[GetPlaceholder() + "txtFirstName"] = { required:"Please enter first name" };

$("#aspnetForm").validate({ rules: myRules, messages: myMessages });
Run Code Online (Sandbox Code Playgroud)