我有 2 个 ASP.Net 页面,一个包含一个空的 div,它将保存 jQuery 对话窗口和另一个页面上的 .load() 控件所需的代码,该页面包含我要验证的控件。(它们是包含在常规 HTML 表中的 ASP.Net 文本框)以下代码用于打开对话框并加载包含控件的第二页:
$(".open-dialog").click(function () {
$("#hfAddressHash").val($(this).attr('class').split(' ')[1]);
$.ajaxSetup({ cache: false }) //Stops annoying caching problem.
$('#dialog').load('jQueryLoad.aspx?Hash='123' + ' #divTest');
dlg.dialog('open');
});
第二页显示的控件示例如下:
<table>
<tr>
<th>Source System(s)</th>
<td width="160"><asp:Label ID="lblSource" runat="server"></asp:Label></td>
<th>Firm</th>
<td><div class="draggable"><asp:Label ID="lblCountry" runat="server"></asp:Label></div></td>
<td width="20"><asp:ImageButton ID="imgArrow" runat="server" CssClass="copyAddress Country" ImageUrl="/Intranet/_Resources/Icons/arrow.png" /></td>
<th>Firm</th>
<td><asp:TextBox ID="txtCountry" CssClass="droppable" runat="server"></asp:TextBox></td>
</tr>
我想让上面的 'txtCountry' 控件成为必填字段,例如使用 jQuery 验证。我的验证和对话功能代码如下:
$("#form1").validate();
if ($("#txtCountry").is(":visible")) {
$("#txtCountry").rules("add", { required: true });
}
var dlg = $("#dialog").dialog({
autoOpen: false,
modal: true,
height: 820,
width: 860,
buttons: {
Cancel: function () {
$("#dialog").dialog('close');
},
Submit: function () {
if (!$('#form1').valid()) { // Validate on Submit
return false;
}
var names = [];
$('#cblTypes input:checked').each(function () {
names.push($(this).val());
});
$.ajax({
type: "POST",
url: "AddressView.aspx/postAddress",
data: '{"OwnerRef":"' + $("#hfClient").val() + '"}',
async: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
form1.submit();
},
error: function (msg) {
alert(msg.d);
}
});
}
}
});
在按下 jquery 对话框中包含的“提交”按钮时,页面不会按预期验证“txtCountry”控件。我在这里想念什么?