2

嗨,我正在使用jQuery JavaScript Library v1.10.2jQuery Validation Plugin 1.11.1得到上述错误。代码

$.validator.addMethod("fnType", function (value, element) {
    if (element.value == "-1") { return false; } else {return true;}
}, "Please select Type");

其余代码用于 jquery 验证。上面的代码是 inside$(document).ready和 inside $("#button").click

注意:我之前使用jQuery JavaScript Library v1.4.4过并升级到这些版本以使用 jquery validate。我从早上就被这个困住了。请帮助/建议。

编辑:这是完整的代码

$(document).ready(function () {
    OnPageLoad();

    $("#ctl00_MainContentHolder_SubmitButton").click(function () {
        ValidatePage();
        if ($("#aspnetForm").valid()) {
            if (FormValidation()) {
                __doPostBack("Submit", "");
            }
        }
    });
});

function ValidatePage() {
    $.validator.addMethod("fnType", function (value, element) {
        if (element.value == "-1") { return false; } else {return true;}
    }, "Please select Type");

    $("#aspnetForm").validate({
        ignore:":hidden",
        rules: 
        {
            <%=Type.UniqueID %>: { required: true, fnType:true },
        }, 
        messages: 
        {
            <%=Type.UniqueID %>:{ required: "Type is required" },
        },
        errorPlacement: function(error, element) {
           error.appendTo('#ctl00_MainContentHolder_errorLabelTop');
        },
        wrapper: 'li'
    });
}

在母版页中,我以相同的顺序拥有这些

<script type="text/javascript" src="../Script/JQuery/jquery-1.10.2.js"></script>
<script type="text/javascript" src="../Script/JQuery/jquery.validate.js"></script>    
<script type="text/javascript" src="../Script/CustomScript/CustomScript.js"></script>

编辑:这是 HTML 代码

<table>
    <tr>
        <td colspan="2">
            <label id="errorLabelTop" runat="server" class="ResponseText"></label>
        </td>
    </tr>
    <tr>
        <td style="width:130px;">
            Scheme Type<span class="RedMainText" style="font-size:12px;"><sup>*</sup></span>
        </td>
        <td>
            <select id="schemeType" runat="server" class="InputText" >
            <option value="-1">--Select--</option>
            <option value="Home3">Home 3 Monthly</option>
            <option value="Home6">Home 6 Monthly</option>
            <option value="Practice3">Practice 3 Monthly</option>
            <option value="Practice6">Practice 6 Monthly</option>
            </select>
        </td>
    </tr>
</table>
4

2 回答 2

4

你的代码:

rules: {
    <%=Type.UniqueID %>: { required: true, fnType:true },
}

您不能将规则分配给idinput。您必须仅使用name属性分配它们。此外,如果您希望它在旧版本的 IE 中工作,请删除任何尾随逗号。

rules: {
    myField: {
        required: true,
        fnType: true 
    }
}

HTML

<input name="myField" ...

显示验证插件的演示不适用于:http id: //jsfiddle.net/hmBjY/

演示验证插件使用:http name: //jsfiddle.net/NKCg9/1/


另外,您的代码:

function ValidatePage() {

    $.validator.addMethod( ....

    $("#aspnetForm").validate({ ....

这些方法不会进入click重复调用的函数或处理程序内部。由click插件自动捕获。 这些方法仅用于初始化,因此您在 DOM 就绪事件处理程序中调用它们一次...

$(document).ready(function() {

    $.validator.addMethod( ....

    $("#aspnetForm").validate({ ....
于 2013-09-23T15:04:52.867 回答
-2

显然,在我断断续续地敲了一天的头之后,我发现了导致问题的原因。我的网页中有 jquery Datepicker,我jquery-ui js/css v1.8.6在 jquery 文件为v1.10.2. 这导致了冲突,升级jquery-uiv1.10.3上述错误后不再存在。这意味着代码中没有错误。另一个需要注意的重要事情是,name 属性是 jquery 验证元素的必备属性。但似乎对于 runat="server" 的元素,它们的 id 可以以这种方式使用 <%=yourid.UniqueID%>在 jquery 验证中。所有这些都发生在母版页和内容页案例中。

感谢您以评论和答案的形式提供的所有有用的贡献。

于 2013-09-24T12:36:30.753 回答