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),则选择该项目。我不能为我的生活弄清楚如何设置默认为最后一项(英国其他地区)。我可以设置默认的选定项目,但如果没有匹配,我希望它默认返回英国其他地区。
由于
答案 0 :(得分: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());
})
}
答案 1 :(得分: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());
})
}