jQuery.validate.js和asp.net母版页
-
22-07-2019 - |
题
我有jQuery的各种文件,最近我需要更改主页项目。这引起了各种jaavscript包括停止工作。计算器是暗示伟大的想法,以解决关于通过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.");
});
不知道如何预防属性nameing问题,如果名称发生了变化,由于母版页正在修改?
解决方案
等待4.0 .NET,它允许用户指定的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 });
其他提示
你有没有看 http://weblogs.asp.net/psperanza/archive/2009/05/07/jquery-selectors-selecting-elements-by-a-partial-id.aspx 在jQuery的部分比赛。结果 唯一的其他选择,我可以看到的是JS文件内容添加到页面和使用的东西<%= txtFirstName.ClientID%>
我的回答是我veggerby的修改。请给予好评,他的回答,不是我的。他化险为夷。
我把我的回应此处添加一个轻微的警告。 (我做的是使用“ATTR(‘名字’))。 并展示了如何用下拉列表做。
不可见的是,我的内容页面上有一个名为“ddlState”和“ddlFavoriteColor”一个asp.net下拉列表。我把在下拉列表项的顶部的虚拟“ - 选择 - ”值,所以我想要的东西,其中的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
});