0

嗨,我正在努力寻找这个问题的答案,如果可以做到吗?

我有一个包含 3 个文本框的登录表单:用户 ID、邮政编码、出生日期

用户 ID 很好,我可以添加一个必需的属性来验证,但我想验证他们是否也已将数据输入到其他 2 个文本框中的 1 个,所以要么是邮政编码,要么是出生日期。我不想使用 asp.net 自定义验证器,因为它们很痛苦,并且希望这可以在 html5/jQuery 中完成。这些文本框位于 .net 用户控件上,因此不确定这是否是一个问题,因为如果我使用类似... $("#form1").validate 的话,我很难找到表单

4

3 回答 3

1

您可能需要使用服务器控件的 ClientID 才能在 javascript 中访问它们。您可以在提交按钮的单击事件上绑定 javascript 并执行任何验证。

$('#<%= submitButton.ClientID %>').click(function (){    
  textBox1Value =  $('#<%= textBox1.ClientID %>').val();
  textBox2Value =  $('#<%= textBox2.ClientID %>').val();
  //do validation on both textboxes here

  if(!conditionFormValidated)  //To prevent submit if form validation fail
     return false;
});
于 2012-07-10T09:03:54.877 回答
0

您应该检查文本框中的所有三个字段值。这应该在表单提交时进行检查。如果其中两个存在,那么您应该重新初始化您的 validate 方法并调用它。

于 2012-07-10T09:01:33.023 回答
0

我就是这样做的,验证向导控件上的 2 个文本框中的 1 个具有值。

if (!Page.IsPostBack)
{
  Button btn = (Button)Wizard.FindControl("StartNavigationTemplateContainerID").FindControl("StartNextButton");
  string script = "$(\"#" + btn.ClientID + "\").click(function () { if (($(\"#" + PostCode.ClientID + "\").val() == \"\" && $(\"#" + textDob.ClientID + "\").val() == \"\") || ($(\"#" + ClientId.ClientID + "\").val() == \"\" && $.browser.msie && parseInt($.browser.version, 10) < 10)) { $.jGrowl(\"<p style='padding: 3px; color: #fff;'>Please enter your Client ID and either a <em>Post code</em> or <em>Date of birth</em></p>\"); return false; }  });";
  Page.ClientScript.RegisterStartupScript(Page.GetType(), "ValidateLogin", script, true);
}
于 2012-07-13T12:57:24.633 回答