我在用户控件中有两个表单,使用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
答案 0 :(得分:1)
您可以使用Web Form的特殊解决方案轻松解决此问题:
不使用硬编码的全名,而是使用动态control.UniqueID
control.UniqueID
是.NET用于客户端的元素name
属性
不幸的是,我们的cms使用.NET Web窗体和母版页,这使得名称属性发生了变化。
您永远不必担心您的元素名称更改,因为它会随着您的元素名称更改而动态更改
在客户端,请使用它:
var name = "<%= txtTest.UniqueID %>";