2013-01-22 69 views
0

http://jsfiddle.net/jeepstone/kxuMC/Jquery的過濾器中,如果不匹配,返回默認

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()); 
     }) 
} 

在上面的代碼,用戶輸入一個郵政編碼的outcode的。如果有匹配(onblur),則選擇該項目。我不能爲我的生活找出如何設定最後一項(英國其他地區)的默認值。我可以設置默認選擇的項目,但是如果沒有匹配,我希望它默認回到英國其他地區。

謝謝

回答

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/

+0

似乎最好的答案。非常感謝你。相當明顯。 – Jeepstone

+0

@Jeepstone很高興我能幫上忙 –

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

+0

我已經與凱文·鮑爾索克斯的答案,因爲它是更簡潔,但這也將工作。謝謝。 – Jeepstone

+0

我同意 - 他更好。 – Chowlett

相關問題