jQuery.autocomplete:如何有条件地使用minLength?

时间:2013-06-11 12:43:30

标签: jquery

在“邮政编码”的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部分忽略"___ __"序列,因为只有数值有效,或者换句话说 - 如果用户输入数值时如何触发自动完成(),如果没有则忽略进入了?

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

谢谢

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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()方法一起使用,并调用自动完成。