我在各种文件中都有jQuery,最近我需要更改母版页中的项目。这导致各种jaavscript包括停止工作。 Stackoverflow是suggesting great ideas来解决有关get by ID选择器的问题。
$("#ctl00_ContentMainPane_eliteUser").html
但是我有一个问题,我们使用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.");
});
如果由于母版页被修改而名称发生变化,是否知道如何防止属性的名称问题?
答案 0 :(得分: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 });
答案 1 :(得分:1)
答案 2 :(得分:0)
我的回答是我对veggerby的修改。请提出他的回应,而不是我的回应。他救了那一天。
我在这里做出回应添加一点警告。 (我在做'使用'attr(“名字”))。 并通过下拉列表显示如何执行此操作。
没看到我的内容页面有一个名为“ddlState”和“ddlFavoriteColor”的asp.net下拉列表。我在下拉列表项的顶部放了一个虚拟的“--Select--”值,所以我想要一些selectedIndex大于零的东西。
注意,这个项目被“卡住”了3.5。 :其中我宁愿用酷4.0的功能做点什么。
是的,我的“检查”代码可能更小,但对于网络样本,我喜欢简明扼要,以显示正在发生的事情。
function GetStateDropDownName() {
var cntlName = $("[id$=_ddlState]").attr("name");
return cntlName;
}
function GetFavoriteColorDropDownName() {
var cntlName = $("[id$=_ddlFavoriteColor]").attr("name");
return cntlName;
}
$(document).ready(function () {
jQuery.validator.addMethod("dropdownBoxHasItemSelected", function (value, select, arg) {
var returnValue = false;
var selectedIndex = $(select).prop("selectedIndex");
if (selectedIndex != 0) {
returnValue = true;
}
return returnValue;
}, "Please select a item.");
var myRules = new Object();
myRules[GetStateDropDownName()] = { dropdownBoxHasItemSelected: true };
myRules[GetFavoriteColorDropDownName()] = { dropdownBoxHasItemSelected: true };
var myMessages = new Object();
myMessages[GetStateDropDownName()] = { dropdownBoxHasItemSelected: "Please select a State." };
myMessages[GetFavoriteColorDropDownName()] = { dropdownBoxHasItemSelected: "Please select a Favorite Color." };
// Initialize validation on the entire ASP.NET form.
$("#aspnetForm").validate({
rules: myRules, messages: myMessages
});