2011-07-20 1 views
0

からjQueryのウィジェット:アクセスのJavaScript

http://jqueryui.com/demos/autocomplete/#combobox

をこのコンボボックスには、このような選択を飾る:

$('select[name=myselect]').combobox(); 

他のロジックでは、すべての内容を含む選択を変更したいと思います。

$('select[name=myselect]').empty(); 
$('select[name=myselect]').append(
    $('select[name=otherselect]').children().clone()); 
$('select[name=myselect]').val('new-value'); 

今、コンボボックスを再レンダリングするにはどうすればいいですか?

答えて

1

完全な例を見て

クリックビューソースhereをコンボボックスコントロール。したがって

$('.selector').live("change", ...) 
.val()を使用して選択を変更したときに変更イベントがトリガされませんので

は(少なくともないjqueryの1.4.4インチのアップグレードが今はできません)動作しませんでした

を使用してXGreenの最初の提案

0: observe_fieldは、ウェブ上で発見いくつか洙効率的ではない機能です

select.observe_field(1, function() { 
    var selected = select.children(":selected"); 
    var value = selected.val() ? selected.text() : ""; 

    input.val(value); 
}); 

:私は、コンボボックスの建設にこのコードを追加しました

さらに優れたソリューションはまだ大歓迎です!

1

私はちょうどチェックしてウィジェットは、独自の変更イベントがあるようです申し訳ありません:私は、前述の拡張によって、私の問題への解決策を見つけた

change: function(event, ui) { 
          if (!ui.item) { 
           var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex($(this).val()) + "$", "i"), 
            valid = false; 
           select.children("option").each(function() { 
            if ($(this).text().match(matcher)) { 
             this.selected = valid = true; 
             return false; 
            } 
           }); 
           if (!valid) { 
            // remove invalid value, as it didn't match anything 
            $(this).val(""); 
            select.val(""); 
            input.data("autocomplete").term = ""; 
            return false; 
           } 
          } 
         } 
+0

change関数で呼び出したものを別の関数に入れて、その関数をchangeイベントで呼び出すことはできませんか? – XGreen

+0

私は混乱をおかけして申し訳ありません。たぶん、この疑問は十分にはっきりしていないでしょう。コンボボックスは再レンダリングされますが、選択されたオプション( 'input'変数内)は同じままです。 –

+0

私の問題に対する解決策が見つかりました。それはあまり美しいものではありませんが、今のところうまくいきます。自分の答えを見てください。 –

関連する問題