1

コンボボックスの変更イベントに基づいて非表示の入力項目を更新しようとしています。特定のクラス(「test1」)の場合、コンボボックスに動的に変更するドロップダウンがたくさんあります。ここで見つけたjqueryを使用して、「オープン」コンボボックスを取得していることを付け加えたいと思います....つまり、オプションリストで利用できるものだけでなく、ユーザー入力を受け入れるものです。この目的のために、ここで提供されている JavaScript を使用しました: jQuery コンボボックス/オートコンプリート、しかし編集可能

ただし、次のいずれかのみが機能します...

   $(document).ready(function () {
        $(".test1").combobox();
    });

    $(document).ready(function () {
        $(".test1").change(function () {
            alert('test'); //Other logic to update hidden elements.

        }
        );
    });

関数をコメントアウトすると、ドロップダウンがコンボボックスに変わり、アラートが発生します。アラート機能をオフにすると、コンボボックスの呼び出しが機能し、ドロップダウンがコンボボックスに変わります。誰でも解決策を提案できますか?

アップデート:

これが機能しない理由がわかりました(少なくともそう思います)。上記のリンクでは、コンボボックスの変更動作は既に処理されています。追加の変更イベント ハンドラが登録されません。コードを変更イベント自体に追加する必要がありました (このスニペットのように):

    change: function (event, ui) {
                var selset = "CHF Discharge Diagnosis";
                    $(':hidden').filter($('input[selsetname="' + selset + '"]')).val(this.value);
                    alert($(':hidden').filter($('input[selsetname="' + selset + '"]')).val());

                    if (!ui.item) {
                        var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex($(this).val()) + "$", "i"),
                            valid = false;
4

2 に答える 2

0

コンボボックスが html 構造を変更している場合 (たとえば、フォームの選択と入力の代わりに ul または div 要素を作成する)、その要素で変更イベントをトリガーしない場合があります。しかし、ここ: http://jquery.sanchezsalvador.com/jquery/page/jquerycomboboxapi.aspxonChangeの一番下は、メソッドを含むスニペットです。それに基づいて、次のことを試してください

$(document).ready(function () {
    var cb = $(".test1").combobox();
    cb.combobox.onChange = function() {
        alert('test'); //Other logic to update hidden elements.
    };
});
于 2012-06-13T21:16:56.637 に答える
0

これがうまくいかなかった理由がわかったと思います(少なくとも私はそう思います)。UI ウィジェットが定義されているリンク (http://stackoverflow.com/questions/9473268/jquery-combobox-autocomplete-but-editable) では、コンボボックスの変更動作は既に処理されています。追加の変更イベント ハンドラが登録されません。コードを変更イベント自体に追加する必要がありました (このスニペットのように):

change: function (event, ui) {
            var selset = "CHF Discharge Diagnosis";
                $(':hidden').filter($('input[selsetname="' + selset + '"]')).val(this.value);
                alert($(':hidden').filter($('input[selsetname="' + selset + '"]')).val());

                if (!ui.item) {
                    var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex($(this).val()) + "$", "i"),
                        valid = false;
于 2012-06-15T17:47:26.510 に答える