无法在值上选择选择

时间:2012-09-19 07:32:14

标签: jquery select

我生成多选框。接下来,我为此选择添加一些选项,并尝试设置所选选项。但这不起作用。这是我设置Selected项目的代码:

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 个答案:

答案 0 :(得分:2)

您无需以这种方式在选项上设置所选属性。您所要做的就是使用select上的'val'功能。

在此处查看此操作: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)中,代码都可以正常工作。所以一定有别的错误。我怀疑你有重复ID。

答案 1 :(得分:1)

.val()接受一个回调参数,该参数可以在给定索引和先前值的情况下计算元素的新值。

这样的事情应该有效:

$("select.sel").val(function(index, value) {
    return obj[index]["id_status"];
});

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

试试这个

JS CODE

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

JS FIDDLE