0

マルチセレクトボックスを生成します。次に、この選択にいくつかのオプションを追加し、選択したオプションを設定しようとします。しかし、これはうまくいきません。これは、選択したアイテムを設定するための私のコードです:

for(xx=0;xx<obj.length; xx++)
{
    //console.log(obj.length);
    idd = obj[xx].id_produkt_lista;   
    id_statusd =  obj[xx].id_status;

    $('#sel_' + idd).find("option[value=" + id_statusd + "]").attr('selected','selected');

}

上記のコードの変数は次のとおりです。

  • idd - オプションを設定する選択ボックスの ID。
  • id_statusd - 選択時に選択する値 # sel +id

私のhtmlコードは次のとおりです。

<tbody>
    <tr id="47">
        <td id="" class="">2</td>
        <td id="">
            <select class="sel" id="sel_47">
            <option value="2" style="color: rgb(186, 175, 28);">drukowanie</option>
            <option valuea="3" style="color: rgb(8, 193, 255);">na zgrzewalni</option>
            <option value="4" style="color: rgb(112, 51, 158);">na oklejaniu</option>
            <option value="5" style="color: rgb(112, 51, 158);">laminowanie</option>
            <option value="6" style="color: rgb(112, 51, 158);">przycinanie</option>
            <option value="7" style="color: rgb(112, 51, 158);">oklejanie</option>
            <option value="8" style="color: rgb(237, 90, 21);">na cięciu</option>
            <option value="9" style="color: rgb(237, 90, 21);">na frezowaniu</option>
            <option value="10" style="color: rgb(237, 90, 21);">burtowanie i klejenie</option>
            <option value="11" style="color: rgb(237, 90, 21);">spawanie</option>
            <option value="12" style="color: rgb(237, 90, 21);">elektryka</option>
            <option value="14" style="color: rgb(90, 35, 163);">zamowienie zewnetrzne</option>
            <option value="15" style="color: rgb(62, 201, 65);">MAGAZYN-gotowe</option>
        </select>
        </td>
     </tr> 
     <tr id="48">
         <td id="" class="">3</td>
         <td id="">
        <select class="sel" id="sel_48">
            <option value="2" style="color: rgb(186, 175, 28);">drukowanie</option>
            <option value="3" style="color: rgb(8, 193, 255);">na zgrzewalni</option>
            <option value="4" style="color: rgb(112, 51, 158);">na oklejaniu</option>
            <option value="5" style="color: rgb(112, 51, 158);">laminowanie</option>
            <option value="6" style="color: rgb(112, 51, 158);">przycinanie</option>
            <option value="7" style="color: rgb(112, 51, 158);">oklejanie</option>
            <option value="8" style="color: rgb(237, 90, 21);">na cięciu</option>
            <option value="9" style="color: rgb(237, 90, 21);">na frezowaniu</option>
            <option value="10" style="color: rgb(237, 90, 21);">burtowanie i klejenie</option>
            <option value="11" style="color: rgb(237, 90, 21);">spawanie</option>
            <option value="12" style="color: rgb(237, 90, 21);">elektryka</option>
            <option value="14" style="color: rgb(90, 35, 163);">zamowienie zewnetrzne</option>
            <option value="15" style="color: rgb(62, 201, 65);">MAGAZYN-gotowe</option>
        </select>
         </td>
       </tr> 
       <tr id="49">
           <td id="" class="">4</td>
           <td id="">
            <select class="sel" id="sel_49"><option value="2" style="color: rgb(186, 175, 28);">drukowanie</option>
            <option value="3" style="color: rgb(8, 193, 255);">na zgrzewalni</option><option value="4" style="color: rgb(112, 51, 158);">na oklejaniu</option>
            <option value="5" style="color: rgb(112, 51, 158);">laminowanie</option><option value="6" style="color: rgb(112, 51, 158);">przycinanie</option>
            <option value="7" style="color: rgb(112, 51, 158);">oklejanie</option><option value="8" style="color: rgb(237, 90, 21);">na cięciu</option>
            <option value="9" style="color: rgb(237, 90, 21);">na frezowaniu</option><option value="10" style="color: rgb(237, 90, 21);">burtowanie i klejenie</option>
            <option value="11" style="color: rgb(237, 90, 21);">spawanie</option><option value="12" style="color: rgb(237, 90, 21);">elektryka</option>
            <option value="14" style="color: rgb(90, 35, 163);">zamowienie zewnetrzne</option><option value="15" style="color: rgb(62, 201, 65);">MAGAZYN-gotowe</option>
            </select></td></tr> </tbody>
4

4 に答える 4

2

この方法でオプションに selected 属性を設定する必要はありません。で「val」関数を使用するだけですselect

ここで実際にこれを参照してください:http://jsfiddle.net/ht6xD/

したがって、コードは次のようになります。

for(xx=0;xx<obj.length; xx++)
{
    //console.log(obj.length);
    idd = obj[xx].id_produkt_lista;   
    id_statusd =  obj[xx].id_status;

    $('#sel_' + idd).val(id_statusd);
}

問題に関連する可能性は低いですが、それでも修正する必要があります。最初の<select>変更で

<option valuea="3"

<option value="3"

編集

私はこれをモックしました( http://jsfiddle.net/HacLZ/ )。本当にこれはあなたが自分でやろうと考えるべきことでしたが、今では完了しています。

このコードは、3 つのソリューションすべて (yours、mine、nbrooks) で問題なく動作します。ですから、他に何か問題があるはずです。IDが重複している疑いがあります。

于 2012-09-19T07:54:38.017 に答える
1

.val()インデックスと前の値を指定して、要素の新しい値を計算できるコールバック パラメータを受け入れます。

このようなものが動作するはずです:

$("select.sel").val(function(index, value) {
    return obj[index]["id_status"];
});
于 2012-09-19T08:09:13.950 に答える
0

これを試して

JS コード

$(document).ready(function(){
    $('select').change(function(){
         var id = $(this).attr('id');
        console.log($('#'+id+'').find('option:selected').text());
    });     
});

JSフィドル

于 2012-09-19T08:26:24.990 に答える
0

idd と id_statusd に予期される値が含まれている場合は問題なく動作するはずですが、選択行を次のように変更してみてください。

$('#sel_' + idd + ' option[value="' + id_statusd + '"]').attr('selected','selected');
于 2012-09-19T07:52:32.810 に答える