2011-11-16 14 views
13

Piszę aplikację mobilną jQuery. Zmieniam listę rozwijaną wybranej opcji za pomocą poniższej instrukcji: - $ ("# DataBaseNames"). Val (db);jQuery Mobile Zmień DropDown Wybrano opcję i odśwież ją

Jestem pewien, że przekazano prawidłową wartość db, ponieważ sprawdziłem ją za pomocą alertu. Po przewinięciu listy rozwijanej pokazuje również właściwy tekst, ale samo menu nie pokazuje właściwego tekstu.

Jakieś żądanie odświeżania, które muszę wstawić?

Edit: -Adding kodu poniżej odpowiedź z Phill rozwiązać go

<script type="text/javascript"> 

     $("#@ViewBag.DivTitle").live('pageshow', function() { 

      var db = getCookie("DataBaseNames"); 

      $("#DataBaseNames").val(db);    
      $("#DataBaseNames option[value='"+ db + "']").attr("selected", "selected"); 

      //  refresh value , Following is what is required   
      $('select').selectmenu('refresh'); 

      $("#cmdLogOn").live("click", function() { 
       var dbSelected = $("#DataBaseNames option:selected").text();    
       setCookie('DataBaseNames', dbSelected); 
      }); 
     }); 

     function setCookie(name, value) { 
      var expires = ""; 
      document.cookie = name + "=" + value + expires + "; path=/"; 
     } 

     function getCookie(name) { 
      var nameEQ = name + "="; 
      var ca = document.cookie.split(';'); 
      for (var i = 0; i < ca.length; i++) { 
       var c = ca[i]; 
       while (c.charAt(0) == ' ') c = c.substring(1, c.length); 
       if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); 
      } 
      return null; 
     } 
    </script> 
+0

Kod byłby przyjemny do obejrzenia, popraw swoje pytanie i dodaj przykładowy kod. Może http://jsfiddle.net –

Odpowiedz

35

odświeżania aktualizować zwyczaj wybierać

ten służy do aktualizacji zwyczaj wybrać, aby odzwierciedlić rodzimy select elementu value.If liczba opcji w zaznaczeniu różni się od liczby elementów w niestandardowym menu , spowoduje to przebudowanie niestandardowego menu. Ponadto, jeśli podasz prawdziwy argument , możesz wymusić przebudowanie.

//refresh value   
$('select').selectmenu('refresh'); 

//refresh and force rebuild 
$('select').selectmenu('refresh', true); 

Docs:

+0

dzięki za wskazanie tego! – vaske

+0

zapisał mój dzień !!!! – sony

0

Jeśli chcesz zmienić jedno menu rozwijane na podstawie innego użyj tego.

<link href="code.jquery.com/mobile/1.4.1/jquery.mobile-1.4.1.min.css" rel="stylesheet"/> 
<link href="jquery/css/index.css" rel="stylesheet"/> 
<link href="../favicon.ico" rel="shortcut icon"/> 
<link href="http://fonts.googleapis.com/css?family=Open+Sans:300,400,700" rel="stylesheet"/> 
<link href="http://code.jquery.com/mobile/1.4.1/jquery.mobile-1.4.1.min.css" rel="stylesheet" /> 
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
<script src="http://code.jquery.com/mobile/1.4.1/jquery.mobile-1.4.1.min.js"></script> 

<script type="text/javascript"> 

    function ItemNo() 
    { 
    var no = $('#sltItemNo')[0].selectedIndex; 

    var myselect = $("select#sltItemName"); 
    myselect[0].selectedIndex =no; 
    myselect.selectmenu("refresh"); 
    } 
    function ItemName() 
    { 
    var no = $('#sltItemName')[0].selectedIndex; 

    var myselect = $("select#sltItemNo"); 
    myselect[0].selectedIndex =no; 
    myselect.selectmenu("refresh"); 
    } 

</script> 

<select id="sltItemNo" onchange="ItemNo()" data-shadow="false" data-mini="true"> 
    <option value="Abc">1</option> 
    <option value="Cde">2</option> 
    <option value="Efg">3</option> 
</select> 

<select id="sltItemName" onchange="ItemName()" data-shadow="false" data-mini="true"> 
    <option value="1">Abc</option> 
    <option value="2">Cde</option> 
    <option value="3">Efg</option> 
</select>