1

JSON オブジェクトに値が存在するかどうかを確認しようとしています。存在する場合は、値を DOM に配置する必要があります。

私の例では、配列 arr.

最終結果では、ユーザーがテキストボックスにテキストを入力して、オプションを選択してオプションボックスを閉じたときに、配置された div に値を入力する必要があります。値が配置される前に、値が配列に存在するかどうかを確認する必要があるため、配置された要素に意味不明なものが配置されません。

    var arr = [ 
        {value : "c++", price: "5.69"},
        {value : "php", price: "5.69"},
        {value : "coldfusion", price: "5.69"},
        {value : "javascript", price: "5.69"},
        {value : "asp", price: "5.69"},
        {value : "ruby", price: "5.69"},
     ];
     // alert(arr.value)
$( "#autocomplete" ).autocomplete({

    source  : arr,
  close : function(event, ui){
    var val = $('input#autocomplete').val();
     //Definite problem[index needed?]
    if ($.inArray(val,arr.value) > -1) {
       $('.placed').html(val);
    }

  }
});

JSON について学び始めたばかりで、このタイプの配列に val が存在するかどうかを確認する方法がわかりません。あなたが私を助けることができれば、それは素晴らしいことです。

jsfiddle

4

1 に答える 1

0

プレーン配列で使用できます$.inArrayが、ここにはオブジェクトの配列があります。したがって$.grep、すべての一致を取得するために使用してみてください。

 close: function (event, ui) {
            var val = $('input#autocomplete').val();
            var res = $.grep(arr, function (o) { //Will give you all the matches
                  return o.value.indexOf(val) > -1;
            });

            if (res.length) {
                $('.placed').html(val);
            }

        }
    });

デモ

しかし、一致するかどうかを確認したいだけのようです。その場合は、単に使用してください$.each

    close: function (event, ui) {
        var val = $('input#autocomplete').val();
        var match = false;
        $.each(arr, function (_, o) {
            if (o.value === val) {
                match = true;
                return false; //break the look once you find a match
            }
        });
        if (match) {
            $('.placed').html(val);
        }

デモ

于 2013-10-13T02:42:42.517 に答える