使用JQuery Validate()问题验证.NET 2.0表单

时间:2010-03-02 17:21:59

标签: c# .net asp.net jquery jquery-validate

我正在尝试使用JQuery Validate()插件验证.NET 2.0中的表单,但它无法正常工作。我知道我的Jquery代码正在工作,因为我设置了函数来清除focus()上的文本字段的默认文本,并且按预期工作。

form.validate()方法似乎永远不会被调用,因为我在自定义验证方法中调用了alert(),该方法在单独的HTML测试页面中工作,但在集成到.NET页面时从不触发。

这可能是因为整个页面被视为.NET中的表单吗?如果我想覆盖默认的提交操作并添加一些客户端验证,我该怎么做?或者我只能在后面的代码中验证表单?感谢。

我的剧本:

<script src="js/jquery.validate.min.js" type="text/javascript"></script>
<script src="js/additional-methods.js" type="text/javascript"></script>
<script src="js/jquery.maskedinput.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function() {

        jQuery.validator.addMethod("checkfields", function(value, element) {

            if ($("#from_date").val() == "" && $("#to_date").val() == "" && $("#last_name").val() == "") {
                return false;
            }
        }, "Please enter either a last name, from date or to date.");

        $("input.from_date").mask("99/99/9999");
        $("input.to_date").mask("99/99/9999");

        $("#searchForm").validate({
            errorElement: "span",
            errorContainer: $("#error"),
            errorPlacement: function(error, element) {
                error.appendTo(document.getElementById("error"));
            },
            success: function(label) {
                $("#searchForm").submit();
            },
            rules: {
                last_name: "checkfields"
            }
        });
        $("#from_date").focus(function() {
            if ($("#from_date").val() == "mm/dd/yyyy") {
                $("#from_date").val("");
            }
        });
        $("#from_date").blur(function() {
            if ($("#from_date").val() == "") {
                $("#from_date").val("mm/dd/yyyy");
            }
        });
        $("#to_date").focus(function() {
            if ($("#to_date").val() == "mm/dd/yyyy") {
                $("#to_date").val("");
            }
        });
        $("#to_date").blur(function() {
            if ($("#to_date").val() == "") {
                $("#to_date").val("mm/dd/yyyy");
            }
        });
    });
</script>

形式:

<form action="search.spax" id="searchForm" name="searchForm" method="post">

  <div id="error" style="display:none;">
      <span></span>.<br clear="all"/>
    </div>
  <table width="520" border="0" cellspacing="0" cellpadding="0" class="obit_form">
     <tr align="left">
      <th><label for="last_name">Last Name</label></th>
      <th></th>
      <th><label for="from_date">From</label></th>
      <th><label for="to_date">To</label></th>
      <th></th>
     </tr>
     <tr align="left">

      <td><input type="text" id="last_name" class="required date" name="last_name" value="" style="width:135px;" /></td>
      <td>and/or</td>
      <td><input type="text" id="from_date" class="required date" name="from_date" value="mm/dd/yyyy" style="width:75px;" /></td>
      <td><input type="text" id="to_date" class="required date" name="to_date" value="mm/dd/yyyy" style="width:75px;" /></td>

      <td><input type="submit alt="Search" title="Search" value="Search" name="submitButton" id="Submit2" /></td>
     </tr>
   </table>       
</form>

1 个答案:

答案 0 :(得分:1)

你正在做这样的事吗?

$(document).ready(function() {

 $('#aspnetForm').validate({
 rules: {
        ctl00$chMain$tbLoginEmail: {
            required: true,
            email: true
        },
...

我知道硬编码的id并不理想,但你得到了图片。