0

このコンボボックスのコードを使用しています。

この部分をコメントアウトすることで、他に類を見ないクエリを超えてテキストを入力できるようになると思いました。

/*Commented out to allow user input
if (!valid) {
    remove invalid value, as it didn't match anything
    $(this).val("");
    select.val("");
    input.data("autocomplete").term = "";
    return false;
}*/

私が賢く直面している問題は、JSでフォームを検証しているときにこの値を取得できないことです。これをどのように行うことができるかについてのアイデアはありますか?

4

5 に答える 5

2

この質問が投稿されて回答されてから、JQueryUIコンボボックスのコードが変更されました。質問で提供されたリンクは引き続き機能しますが、そこにあるコードは、このスレッドで説明されているコードとは異なります。

Peterのアプローチのように機能する新しいコンボボックスコード(2015年9月2日現在)の修正は次のとおりです。

カスタム値が削除されないように、最初にこのブロックを削除します。

this.input
  .val( "" )
  .attr( "title", value + " didn't match any item" )
  .tooltip( "open" );
this.element.val( "" );
this._delay(function() {
  this.input.tooltip( "close" ).attr( "title", "" );
}, 2500 );
this.input.autocomplete( "instance" ).term = "";

このブロックに置き換えて、カスタム値を選択オプションとして追加し、それを現在の値として設定します。

this.element.append('<option>' + this.input.val() + '</option>'); //Add the new option
this.element.val(this.input.val()); //select the new option
于 2015-09-08T13:51:03.520 に答える
1

だから私はこれを回避しました。隠れた変数を作成しました:

<input id="EnterYourOwnValue" type="hidden" value="Enter New... or Select" />

次に、jqueryコンボの一部を編集して、EnterYourOwnValueに入力した値を保存しました。

                            if (!valid) {
                                $("#EnterYourOwnValue").val($(this).val());
                                /*Commented out to allow user input
                                //remove invalid value, as it didn't match anything
                                $(this).val("");
                                select.val("");
                                input.data("autocomplete").term = "";
                                return false;
                                */
                            }

または、選択した値を保存します。

                        select: function (event, ui) {
                            $("#EnterYourOwnValue").val(ui.item.option.value);
                        ui.item.option.selected = true;
                        self._trigger("selected", event, {
                            item: ui.item.option
                        });

これで、オートコンプリートコンボボックスがハッキングされて選択されるか、1つのボックスに独自の値を入力できるようになります。

于 2012-07-19T14:42:46.120 に答える
1

このように、select要素の最後に「無効な」入力を追加してみませんか。

if (!valid) {
    select.append('<option>' + $(element).val() + '</option>'); //Add the new option
    select.val($(element).val()); //select the new option
} 

これは、選択でストレートテキスト値を使用している場合にのみ関連します

これに対する答えを探しているときにあなたのコードを見つけましたが、あなたの答えを読んだ後、私がしなければならないことに気づきました。

于 2014-05-07T22:55:38.023 に答える
0

これを複数のコンボボックスで機能させるために何年も費やしました。

この投稿を複数のコンボボックスで機能させるには、これを追加する必要がありました。

if($(select).attr('name') == YourComboBoxName) $("#EnterYourOwnValue").val($(this).val())

于 2012-12-20T04:29:52.997 に答える
0

これは、複数のコンボボックスで作業しているときに私のためにそれをしたことです

もちろん、私も隠された入力をしなければなりませんでした。

var thisinput = this.element.attr("name");
var value = this.input.val();

    if(thisinput == "YourComboBoxName"){
    $("#EnterYourOwnValue").val(value);
    }
于 2014-10-22T00:24:17.163 に答える