2013-07-23 36 views
1

我讀了這個不錯的tutorial,解釋瞭如何過濾選擇菜單。它的工作原理與jQuery-1.9.1不錯,但我需要的Web應用程序的移動版本,所以我加入HTML:使用jQuery過濾選擇菜單

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script> 

完整的index.html:

<meta charset="utf-8"> 
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css" /> 


<div data-role="fieldcontain"> 
    <label for="search">Search Input:</label> 
    <input type="search" id="search" /><br/> 
</div> 

<div data-role="fieldcontain"> 
<label for="metro" class="select">Ст. метро:</label> 
<select name="metro" id="metro" data-native-menu="false"> 
<option value="Country..." data-default="true">Country...</option> 
<option value="Afganistan">Afganistan</option> 
<option value="Albania">Albania</option> 
<option value="Algeria">Algeria</option> 
<option value="American Samoa">American Samoa</option> 
<option value="Andorra">Andorra</option> 
<option value="Angola">Angola</option> 
<option value="Anguilla">Anguilla</option> 
<option value="Antigua &amp; Barbuda">Antigua &amp; Barbuda</option> 
<option value="Argentina">Argentina</option> 
<option value="Armenia">Armenia</option> 
<option value="Aruba">Aruba</option> 
<option value="Australia">Australia</option> 
<option value="Austria">Austria</option> 
<option value="Azerbaijan">Azerbaijan</option> 
<option value="Bahamas">Bahamas</option> 
<option value="Bahrain">Bahrain</option> 
<option value="Bangladesh">Bangladesh</option> 
<option value="Barbados">Barbados</option> 
<option value="Belarus">Belarus</option> 
<option value="Belgium">Belgium</option> 
<option value="Belize">Belize</option> 
<option value="Benin">Benin</option> 
<option value="Bermuda">Bermuda</option> 
<option value="Bhutan">Bhutan</option> 
<option value="Bolivia">Bolivia</option> 
<option value="Bonaire">Bonaire</option> 
<option value="Bosnia &amp; Herzegovina">Bosnia &amp; Herzegovina</option> 
<option value="Botswana">Botswana</option> 
<option value="Brazil">Brazil</option> 
<option value="British Indian Ocean Ter">British Indian Ocean Ter</option> 
<option value="Brunei">Brunei</option> 
<option value="Bulgaria">Bulgaria</option> 
<option value="Burkina Faso">Burkina Faso</option> 
<option value="Burundi">Burundi</option> 
<option value="Cambodia">Cambodia</option> 
<option value="Cameroon">Cameroon</option> 
<option value="Canada">Canada</option> 
<option value="Canary Islands">Canary Islands</option> 
<option value="Cape Verde">Cape Verde</option> 
<option value="Cayman Islands">Cayman Islands</option> 
<option value="Central African Republic">Central African Republic</option> 
<option value="Chad">Chad</option> 
<option value="Channel Islands">Channel Islands</option> 
<option value="Chile">Chile</option> 
<option value="China">China</option> 
<option value="Christmas Island">Christmas Island</option> 
<option value="Cocos Island">Cocos Island</option> 
<option value="Colombia">Colombia</option> 
<option value="Comoros">Comoros</option> 
<option value="Congo">Congo</option> 
<option value="Cook Islands">Cook Islands</option> 
<option value="Costa Rica">Costa Rica</option> 
<option value="Cote DIvoire">Cote D'Ivoire</option> 
<option value="Croatia">Croatia</option> 
<option value="Cuba">Cuba</option> 
<option value="Curaco">Curacao</option> 
<option value="Cyprus">Cyprus</option> 
<option value="Czech Republic">Czech Republic</option> 
<option value="Denmark">Denmark</option> 
<option value="Djibouti">Djibouti</option> 
<option value="Dominica">Dominica</option> 
<option value="Dominican Republic">Dominican Republic</option> 
<option value="East Timor">East Timor</option> 
<option value="Ecuador">Ecuador</option> 
<option value="Egypt">Egypt</option> 
<option value="El Salvador">El Salvador</option> 
<option value="Equatorial Guinea">Equatorial Guinea</option> 
<option value="Eritrea">Eritrea</option> 
<option value="Estonia">Estonia</option> 
<option value="Ethiopia">Ethiopia</option> 
<option value="Falkland Islands">Falkland Islands</option> 
<option value="Faroe Islands">Faroe Islands</option> 
<option value="Fiji">Fiji</option> 
<option value="Finland">Finland</option> 
<option value="France">France</option> 
<option value="French Guiana">French Guiana</option> 
<option value="French Polynesia">French Polynesia</option> 
<option value="French Southern Ter">French Southern Ter</option> 
<option value="Gabon">Gabon</option> 
<option value="Gambia">Gambia</option> 
<option value="Georgia">Georgia</option> 
<option value="Germany">Germany</option> 
<option value="Ghana">Ghana</option> 
<option value="Gibraltar">Gibraltar</option> 
<option value="Great Britain">Great Britain</option> 
<option value="Greece">Greece</option> 
<option value="Greenland">Greenland</option> 
<option value="Grenada">Grenada</option> 
<option value="Guadeloupe">Guadeloupe</option> 
<option value="Guam">Guam</option> 
<option value="Guatemala">Guatemala</option> 
<option value="Guinea">Guinea</option> 
<option value="Guyana">Guyana</option> 
<option value="Haiti">Haiti</option> 
<option value="Hawaii">Hawaii</option> 
<option value="Honduras">Honduras</option> 
<option value="Hong Kong">Hong Kong</option> 
<option value="Hungary">Hungary</option> 
<option value="Iceland">Iceland</option> 
<option value="India">India</option> 
<option value="Indonesia">Indonesia</option> 
<option value="Iran">Iran</option> 
<option value="Iraq">Iraq</option> 
<option value="Ireland">Ireland</option> 
<option value="Isle of Man">Isle of Man</option> 
<option value="Israel">Israel</option> 
<option value="Italy">Italy</option> 
<option value="Jamaica">Jamaica</option> 
<option value="Japan">Japan</option> 
<option value="Jordan">Jordan</option> 
<option value="Kazakhstan">Kazakhstan</option> 
<option value="Kenya">Kenya</option> 
<option value="Kiribati">Kiribati</option> 
<option value="Korea North">Korea North</option> 
<option value="Korea Sout">Korea South</option> 
<option value="Kuwait">Kuwait</option> 
<option value="Kyrgyzstan">Kyrgyzstan</option> 
<option value="Laos">Laos</option> 
<option value="Latvia">Latvia</option> 
<option value="Lebanon">Lebanon</option> 
<option value="Lesotho">Lesotho</option> 
<option value="Liberia">Liberia</option> 
<option value="Libya">Libya</option> 
<option value="Liechtenstein">Liechtenstein</option> 
<option value="Lithuania">Lithuania</option> 
<option value="Luxembourg">Luxembourg</option> 
<option value="Macau">Macau</option> 
<option value="Macedonia">Macedonia</option> 
<option value="Madagascar">Madagascar</option> 
<option value="Malaysia">Malaysia</option> 
<option value="Malawi">Malawi</option> 
<option value="Maldives">Maldives</option> 
<option value="Mali">Mali</option> 
<option value="Malta">Malta</option> 
<option value="Marshall Islands">Marshall Islands</option> 
<option value="Martinique">Martinique</option> 
<option value="Mauritania">Mauritania</option> 
<option value="Mauritius">Mauritius</option> 
<option value="Mayotte">Mayotte</option> 
<option value="Mexico">Mexico</option> 
<option value="Midway Islands">Midway Islands</option> 
<option value="Moldova">Moldova</option> 
<option value="Monaco">Monaco</option> 
<option value="Mongolia">Mongolia</option> 
<option value="Montserrat">Montserrat</option> 
<option value="Morocco">Morocco</option> 
<option value="Mozambique">Mozambique</option> 
<option value="Myanmar">Myanmar</option> 
<option value="Nambia">Nambia</option> 
<option value="Nauru">Nauru</option> 
<option value="Nepal">Nepal</option> 
<option value="Netherland Antilles">Netherland Antilles</option> 
<option value="Netherlands">Netherlands (Holland, Europe)</option> 
<option value="Nevis">Nevis</option> 
<option value="New Caledonia">New Caledonia</option> 
<option value="New Zealand">New Zealand</option> 
<option value="Nicaragua">Nicaragua</option> 
<option value="Niger">Niger</option> 
<option value="Nigeria">Nigeria</option> 
<option value="Niue">Niue</option> 
<option value="Norfolk Island">Norfolk Island</option> 
<option value="Norway">Norway</option> 
<option value="Oman">Oman</option> 
<option value="Pakistan">Pakistan</option> 
<option value="Palau Island">Palau Island</option> 
<option value="Palestine">Palestine</option> 
<option value="Panama">Panama</option> 
<option value="Papua New Guinea">Papua New Guinea</option> 
<option value="Paraguay">Paraguay</option> 
<option value="Peru">Peru</option> 
<option value="Phillipines">Philippines</option> 
<option value="Pitcairn Island">Pitcairn Island</option> 
<option value="Poland">Poland</option> 
<option value="Portugal">Portugal</option> 
<option value="Puerto Rico">Puerto Rico</option> 
<option value="Qatar">Qatar</option> 
<option value="Republic of Montenegro">Republic of Montenegro</option> 
<option value="Republic of Serbia">Republic of Serbia</option> 
<option value="Reunion">Reunion</option> 
<option value="Romania">Romania</option> 
<option value="Russia">Russia</option> 
<option value="Rwanda">Rwanda</option> 
<option value="St Barthelemy">St Barthelemy</option> 
<option value="St Eustatius">St Eustatius</option> 
<option value="St Helena">St Helena</option> 
<option value="St Kitts-Nevis">St Kitts-Nevis</option> 
<option value="St Lucia">St Lucia</option> 
<option value="St Maarten">St Maarten</option> 
<option value="St Pierre &amp; Miquelon">St Pierre &amp; Miquelon</option> 
<option value="St Vincent &amp; Grenadines">St Vincent &amp; Grenadines</option> 
<option value="Saipan">Saipan</option> 
<option value="Samoa">Samoa</option> 
<option value="Samoa American">Samoa American</option> 
<option value="San Marino">San Marino</option> 
<option value="Sao Tome & Principe">Sao Tome &amp; Principe</option> 
<option value="Saudi Arabia">Saudi Arabia</option> 
<option value="Senegal">Senegal</option> 
<option value="Seychelles">Seychelles</option> 
<option value="Sierra Leone">Sierra Leone</option> 
<option value="Singapore">Singapore</option> 
<option value="Slovakia">Slovakia</option> 
<option value="Slovenia">Slovenia</option> 
<option value="Solomon Islands">Solomon Islands</option> 
<option value="Somalia">Somalia</option> 
<option value="South Africa">South Africa</option> 
<option value="Spain">Spain</option> 
<option value="Sri Lanka">Sri Lanka</option> 
<option value="Sudan">Sudan</option> 
<option value="Suriname">Suriname</option> 
<option value="Swaziland">Swaziland</option> 
<option value="Sweden">Sweden</option> 
<option value="Switzerland">Switzerland</option> 
<option value="Syria">Syria</option> 
<option value="Tahiti">Tahiti</option> 
<option value="Taiwan">Taiwan</option> 
<option value="Tajikistan">Tajikistan</option> 
<option value="Tanzania">Tanzania</option> 
<option value="Thailand">Thailand</option> 
<option value="Togo">Togo</option> 
<option value="Tokelau">Tokelau</option> 
<option value="Tonga">Tonga</option> 
<option value="Trinidad &amp; Tobago">Trinidad &amp; Tobago</option> 
<option value="Tunisia">Tunisia</option> 
<option value="Turkey">Turkey</option> 
<option value="Turkmenistan">Turkmenistan</option> 
<option value="Turks &amp; Caicos Is">Turks &amp; Caicos Is</option> 
<option value="Tuvalu">Tuvalu</option> 
<option value="Uganda">Uganda</option> 
<option value="Ukraine">Ukraine</option> 
<option value="United Arab Erimates">United Arab Emirates</option> 
<option value="United Kingdom">United Kingdom</option> 
<option value="United States of America">United States of America</option> 
<option value="Uraguay">Uruguay</option> 
<option value="Uzbekistan">Uzbekistan</option> 
<option value="Vanuatu">Vanuatu</option> 
<option value="Vatican City State">Vatican City State</option> 
<option value="Venezuela">Venezuela</option> 
<option value="Vietnam">Vietnam</option> 
<option value="Virgin Islands (Brit)">Virgin Islands (Brit)</option> 
<option value="Virgin Islands (USA)">Virgin Islands (USA)</option> 
<option value="Wake Island">Wake Island</option> 
<option value="Wallis &amp; Futana Is">Wallis &amp; Futana Is</option> 
<option value="Yemen">Yemen</option> 
<option value="Zaire">Zaire</option> 
<option value="Zambia">Zambia</option> 
<option value="Zimbabwe">Zimbabwe</option> 
</select> 
</div> 


<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script> 
<script> 
$(document).ready(function() { 

jQuery.fn.filterByText = function(textbox) { 
    return this.each(function() { 
     var select = $(this); 
     var options = [], 
      defaultOption = ''; 

     select.find('option').each(function() { 
      var elm = $(this); 
      if(elm.data('default') != true) 
      { 
       options.push({value: elm.val(), text: elm.text()}); 
      } 
      else 
      { 
       defaultOption = elm.text(); 
      } 
     }); 

     $(textbox).bind('change keyup', function() { 
      select.empty(); 
      var search = $.trim($(this).val()); 
      var regex = new RegExp(search,"gi"); 

      if(search == '') 
      { 
       select.append($('<option>').text(defaultOption).prop('selected', true)); 
      } 
      $.each(options, function(i) { 
       var option = options[i]; 
       if(option.text.match(regex) !== null) { 
        select.append(
         $('<option>').text(option.text).val(option.value) 
        ); 
       } 
      }); 
     }); 
    }); 
}; 

    $(function() { 
     $('#metro').filterByText($('#search'), true); 
    }); 

}); 

</script> 

沒有移動JS - 一切正常,所以,我認爲,問題出在jquery.mobile-1.3.2.min.js。

如何解決?謝謝。

+0

,爲什麼你不能使用jquery 1.9.1 – coolguy

+0

@ubercooluk因爲我需要手機版本 – tim

回答

2

當您使用jQuery Mobile小部件時,在頁面加載並插入到DOM中後,小部件將得到增強。增強發生在pagecreate和pageinit事件之間。如果在增強步驟後以編程方式更改小部件的項目,則必須觸發小部件的增強。通常你只需要在widget上調用'refresh'方法。由於您使用selectmenu小部件,選項改變之後,你必須調用刷新方法在明年方式:

select.selectmenu('refresh'); 

這裏是jsFiddle

+0

謝謝,我不知道這件事。在sigle index.html中它可以工作,但是如果我將它複製到我的項目中 - 什麼都不會發生(甚至是錯誤)。你可以想象問題是什麼? – tim

+0

我不知道。但嘗試使用'pageinit'事件而不是document.ready。 'pageinit'是文檔準備好的移動版本。你可以通過id將它綁定到特殊頁面。 http://api.jquerymobile.com/pageinit/ –

+0

它的工作原理!非常感謝你! – tim