0

http://jsfiddle.net/jeepstone/kxuMC/

if($('#deliveryPostcodeEstimator').length > 0) {
    $('#deliveryPostcodeEstimator')
        .blur(function() {
            $('select[name=country] option').filter(function(index) { 
                if ($(this).text() == $('#deliveryPostcodeEstimator').val().toUpperCase()) {
                    var result = true;
                } else {
                    // return the last item in the dropdown list
                }
                console.log(result);
                return result;
            }).prop('selected', true);
            var thisForm = $(this).closest("form");
            //thisForm.submit();
        })
        .keyup(function() {
            $(this).val($(this).val().toUpperCase());
        })
}

在上面的代码中,用户输入邮政编码的外码。如果有匹配项(onblur),则选择该项目。我一生都无法弄清楚如何将默认设置为最后一项(英国其他地区)。我可以设置默认选定项目,但如果没有匹配项,我希望它默认返回英国其他地区。

谢谢

4

2 回答 2

2

为什么不在Rest of UK进行过滤之前将所选选项设置为。然后让过滤器在适当的情况下覆盖默认选择。

if($('#deliveryPostcodeEstimator').length > 0) {
        $('#deliveryPostcodeEstimator')
            .blur(function() {
                //Set to default
                $('select[name=country] option:last').prop('selected', true);
                $('select[name=country] option').filter(function(index) { 
                    if ($(this).text() == $('#deliveryPostcodeEstimator').val().toUpperCase()) {
                        var result = true;
                    }
                    return result;
                }).prop('selected', true);
                var thisForm = $(this).closest("form");
                //thisForm.submit();
            })
            .keyup(function() {
                $(this).val($(this).val().toUpperCase());
            })
    }

示例:http: //jsfiddle.net/kxuMC/1/

于 2013-01-22T10:29:36.660 回答
0

您需要检查过滤器是否匹配任何内容。这样的事情应该做:

if($('#deliveryPostcodeEstimator').length > 0) {
        $('#deliveryPostcodeEstimator')
            .blur(function() {
                var sel = $('select[name=country] option').filter(function(index) { 
                    return ($(this).text() == $('#deliveryPostcodeEstimator').val().toUpperCase())                      
                });
                if (sel.length > 0)
                    sel.prop('selected', true);
                else
                    $('select[name=country] option').last().prop('selected', true);
                var thisForm = $(this).closest("form");
                //thisForm.submit();
            })
            .keyup(function() {
                $(this).val($(this).val().toUpperCase());
            })
    }

JSFiddle

于 2013-01-22T10:28:50.453 回答