1

私は次のように私が望むロジックで次のコードを持っています:

  1. ユーザーはスポーツを2回選択することはできません。ユーザーはスポーツをデータベースに保存している可能性があり、そのことを念頭に置いて、データベースレコードが読み込まれて表示され、リストに表示されていない限り、ユーザーはスポーツを追加できます。現在、Baseballをデータベースからのものとして設定していますが、もう一度選択すると、ロジックによってユーザーが再度追加できるようになります。私が間違っていることは何ですか?

JSFIDDLE: http: //jsfiddle.net/Jrqqq/

     var allVals = [{ id: 1, value: "Baseball"}];

     $.each(allVals, function (k, v) {
         $("#results").append("<label class=\"wList\"><input checked=\"checked\" class=\"wList-chk\" name=\"wList[]\" type=\"checkbox\" value=\""
         + v.id
         + "\">"
         + v.value
         + "</label>");
     });

     $(function () {
         var sports = [{ id: 1, value: "Baseball" },
                    { id: 2, value: "Soccer" },
                    { id: 3, value: "Basketball" },
                    { id: 4, value: "Volleyball" },
                    { id: 5, value: "Tennis" },
                    { id: 6, value: "Running" },
                    { id: 7, value: "Swimming"}];

         $("#sports").autocomplete({
             source: sports,
             select: function (event, ui) {

                 if ($.inArray(ui.item.id, allVals) == -1) {
                     allVals.push(ui.item.id);
                     $("#results")
                                 .append("<label class=\"wList\"><input checked=\"checked\" class=\"wList-chk\" name=\"wList[]\" type=\"checkbox\" value=\""
                                 + ui.item.id
                                 + "\">"
                                 + ui.item.value
                                 + "</label>");
                     $('input.wList-chk[type="checkbox"][value="' + ui.item.id + '"]').parent().effect('highlight', {}, 1500);
                     ui.item.value = "";
                 }
                 else {
                     ui.item.value = "";
                     $('input.wList-chk[type="checkbox"][value="' + ui.item.id + '"]').parent().effect('highlight', {}, 1500);
                 }
             }
         });
     });

     $(document).on("change", ".wList-chk", function () {
         if ($(this).attr('checked')) {
             return;
         } else {
             var thisVal = $(this).val();
             var index = $.inArray(thisVal, allVals);
             allVals.splice(index, 1);
             $(this).parent('.wList').remove();
         }
     });
4

1 に答える 1

1

野球IDをallVals配列に追加していないようです。

于 2013-01-16T23:57:04.357 に答える