jQuery 验证输入 id 和 submitHandler

jQuery validate input id and submitHandler

我在用户控件中有两个表单,使用 jQuery 和 Ajax 发送电子邮件。不幸的是,我们的 cms 使用 .NET Web 窗体和母版页,这使得名称属性发生变化。这使得使用 jquery 验证变得困难,因为它是基于属性名称的。你对我如何解决这个问题有什么建议吗?

代码

 $(function () {
        $("#tbSendComment").click(function (e) {

            $('#formComment').validate({
                rules: {
                    ctl00$mainPlaceHolder$ctl02$tbCommentSubject: "required",
                    ctl00$mainPlaceHolder$ctl02$tbCommentMessage: "required",
                    ctl00$mainPlaceHolder$ctl02$tbCommentName: "required",
                    ctl00$mainPlaceHolder$ctl02$tbCommentEmail: {
                        required: true,
                        email: true
                    }
                },


                submitHandler: function (form) {
                    var obj = {};
                    var Uri = '<%: Uri %>';
                    var Title = '<%: Title %>';
                    obj.subject = $("#tbCommentSubject").val();
                    obj.message = $("#tbCommentMessage").val();
                    obj.name = $("#tbCommentName").val();
                    obj.fromEmail = $("#tbCommentEmail").val();
                    obj.cc = $("#cbSendMeCoppyComment").prop('checked');
                    obj.title = Title;
                    obj.uri = Uri;


                    var jsonData = JSON.stringify(obj);

                    $.ajax({
                        type: "POST",
                        url: "/leaveacomment",
                        data: jsonData,
                   success: function successFunc(data) {
                   etc 
                   etc

您可以使用Web Form的特殊解决方案轻松解决这个问题:

与其硬编码整个名称,不如使用动态 control.UniqueID

control.UniqueID 是 .NET 在客户端用于您的元素 name 属性的内容

Unfortunately, our cms using .NET Web Forms and master pages, which makes name attribute changing.

您永远不必担心元素名称的变化,因为它会随着元素名称的变化而动态变化

在客户端使用:

var name = "<%= txtTest.UniqueID %>";

MSDN