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 に答える