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 - 应该在 select # 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 属性。您所要做的就是在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/)。确实,这是您应该考虑自己做的事情,但现在已经完成。

该代码在所有三种解决方案(您的、我的和 nbrooks)中都可以正常工作。所以肯定有其他问题。我怀疑你有重复的身份证。

于 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

如果 idd 和 id_statusd 包含预期值,它应该可以正常工作,但是尝试将选择行更改为:

$('#sel_' + idd + ' option[value="' + id_statusd + '"]').attr('selected','selected');
于 2012-09-19T07:52:32.810 回答
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 回答