jQuery验证不更新错误消息

时间:2014-07-12 19:25:04

标签: javascript php jquery apache validation

我有一个要求用户提供地址的表单,在此表单上有一个邮政编码字段。该字段根据加拿大邮政编码RegEX远程检查有效性。

如果字段中的数据未通过测试,则会显示一条错误消息,显示字段中输入的内容+“不是有效的邮政编码”。

即。如果我输入“44444”并尝试验证,则错误显示“44444不是有效的邮政编码”。

PHP脚本已经过测试和工作,通过jQuery验证脚本进行远程检查工作,它正确地返回true或false,但是如果你使用邮政代码来测试它,并且改变它足够多次,那么错误消息停止更新所以你得到的是,而不是“44444不是一个有效的邮政编码”,它会说“44不是一个有效的邮政编码”,它总是似乎是你在同一个尝试的旧组合“页面加载”。

当发生这种情况时,脚本仍然可以正常工作,如果您输入正确的邮政编码将会通过并且错误消息消失。

键入不正确的文件将失败并再次显示错误消息,但该错误消息未显示您输入的新数据,它会显示您之前输入的内容,即如果您键入“L3B 555”,而不是显示“L3B 555不是有效的邮政编码”,它会说“44不是有效的邮政编码”,并且在您刷新页面并重新开始之前一直停留在先前的输入上。

同样,即使这一切开始发生,脚本仍会传递有效的邮政编码并允许您通过表单。

这是我第一次验证这个复杂的事情,所以请原谅我,如果它是显而易见的。

这是javascript:

var validator = $("#newReviewForm").validate({

            onkeyup: false,         
            rules: {
                //Here we name each field from the page that we are validating
                streetNo: {
                    required: true,
                },
                streetName : {
                    required: true,
                },
                town: {
                    required: true,
                },
                postal: {
                    required: true,
                    remote: {
                        url: "_libraries/PHP/newReview_postalRegex.php",
                        type: "post",

                    },
                },
                province: {
                    required: true,
                },
            },
            messages: {
                //Here we place the messages we want displayed when a form is invalid
                streetNo: {
                    required: "We need the unit number.",
                },
                streetName : {
                    required: "We need the street's name."
                },
                town: {
                    required: "We need the town's name."
                },
                postal: {
                    required: "Please enter a postal code.",
                    remote: $.validator.format("{0} is not a valid postal code."),

                },
                province: {
                    required: "Please enter a valid Province",
                    required: true,
                },
            },
            errorLabelContainer: "#errorMessages",
            wrapper: "li",
            submitHandler: function() { alert("Submitted!")},



        });

远程PHP代码:

  <?php
       $request = trim(strtoupper($_REQUEST['postal']));
       $postal = $request;
       $valid = 'true';

       $regex = '^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$^';

       if (preg_match($regex, $postal)) {
           echo $valid;
       } else {
           $valid = 'false';
           echo $valid;
       }
   ?>

形式:

<form id="newReviewForm" method="post" action="#">
        <table>             
              <tr>
                <td class="title">Street Number</td>
                <td>                  
                    <input type="text" name="streetNo" id="streetNo" required="required"/></td><td class="status"></td>

                <td class="title" style="float: right">Apt #</td>
                <td><input type="text" name="aptNo" id="aptNo" /></td><td class="status"></td>
              </tr>
              <tr>      
                <td class="title">Street Name</td>
                <td colspan="4"><input type="text" name="streetName" id="streetName" /></td><td class="status"></td>
              </tr>
              <tr>
                <td class="title">Town</td>
                <td colspan="4"><input type="text" name="town" id="town" /></td><td class="status"></td>
              </tr>
              <tr>
                <td class="title">Postal Code</td>
                <td colspan="4"><input type="text" name="postal" id="postal" /></td><td class="status"></td>
              </tr>
              <tr>
                <td class="title">Province</td>
                <td colspan="4"><input type="text" name="province" id="province" /></td><td class="status"></td>
              </tr>             
      </table>  
    <input type="submit" value="submit" />
</form>
<div id="errorMessages"></div>

我不认为这是一个PHP问题,但我现在不知所措,无法弄清楚为什么会这样。

0 个答案:

没有答案