我有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
    });
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top