0

在“邮政编码”的 html 输入中,我通过以下方式附加了 jQuery.autocomplete() 和 mask():

<input type="text" name="PostCode" id="PostCode" size="10" value="<% = vPostCode %>">
<script type="text/javascript">
$(function() {
    $("#PostCode").mask("999 99");

    $("#PostCode").autocomplete({
        source: function( request, response ) {
            $.ajax({
                url: "./ajax.asp"
                , dataType: "jsonp"
                , data: {
                    ajax: "1",
                    action: "getPC",
                    maxRows: 10,
                    contains: request.term
                }
                , success: function( data ) {
                    response( $.map( data.PC, function( item ) {
                        return {
                            label: item.pCode + ' : ' + item.City + ' : ' + item.Region
                            , value: item.pCode
                        }
                    }));
                }
                , contentType: "application/x-www-form-urlencoded;charset=1253"
            });
        }
        , select: function( event, ui ) {
            $("#PostCode").val(ui.item.zip);
        }
        , minLength: 2
        , selectFirst: true
        , delay: 200
    });
});
</script>

当光标进入空输入id="PostCode"时出现问题,它被(3个下划线,空格和2个下划线)填充"___ __",这是正常的,因为mask()。但由于 minLength: 2 它会导致自动完成工作

我如何告诉 minLength 部分忽略"___ __"序列,因为只有数值有效,或者换句话说 - 如何仅在用户输入数值时触发 autocomplete(),如果没有输入则忽略?

我正在使用 jQuery 1.71 和 jquery.maskedinput 1.2.2

谢谢你

4

2 回答 2

0

我在这里发现了一个类似的问题jQuery validation plugin: accept only US, Canada and Mexic zip code?

正则表达式看起来拥有您所需要的一切。(最少 2、数字、面具等)

jQuery.validator.addMethod("zipcodeUS", function(value, element) {
return this.optional(element) || /\d{5}-\d{4}$|^\d{5}$/.test(value);
}, "The specified US ZIP Code is invalid");

这个有一个有用的范围。

jQuery.validator.addMethod("ziprange", function(value, element) {
   return this.optional(element) || /^90[2-5]\d\{2\}-\d{4}$/.test(value);
   }, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");

然后您可以将这些规则与 validate() 方法一起使用并调用自动完成功能。

于 2013-06-11T13:59:23.420 回答
0

尝试将 $(request.term).replace("_","") 替换为实际文本

于 2013-06-11T13:29:56.593 回答