jQuery验证输入id和submitHandler

时间:2016-05-10 09:37:46

标签: jquery asp.net jquery-validate unobtrusive-validation

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

代码

 $(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

1 个答案:

答案 0 :(得分:1)

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

不使用硬编码的全名,而是使用动态control.UniqueID

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

  

不幸的是,我们的cms使用.NET Web窗体和母版页,这使得名称属性发生了变化。

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

在客户端,请使用它:

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

MSDN