Jquery:在通过ajax填充的选择选项上设置选定状态

时间:2011-08-26 19:25:11

标签: php jquery ajax jquery-selectbox

我有6个选择框(sbs),3到一行,所以有两行。前三个sbs包含一个通过php填充的选项列表,数据从mysql中撤回。当选中每个框中的一个选项时,我正在使用jquery(通过ajax)为其后面的sb拉回选项,并用相应的数据填充所述sb。我点击'创建',数据通过ajax发送到php脚本,然后PHP脚本将数据存储在表中,并返回表单下方表格中的下拉数据(尽管已格式化)。因此,在创建“组合”后,您可能会看到这样的内容。在冒号左侧的Eveyrthying是选择框顶行的选项,然后您从右侧显示的下方相应框中选择了选项。

Color: Red    |   Capacity : 4GB    |      Model : ABC    |    EDIT
Color: Blue   |       Speed: 2GHZ   |   Capacity : 2GB    |    EDIT

如果我想编辑记录,我点击编辑,jquery找到点击编辑按钮的ID,通过ajax将其传递给另一个php脚本,然后返回一个带有相关数据的json对象,然后用于重新填充带有所选选项的下拉框。到目前为止,一切都运行良好。

我的问题是这样,只有顶行的sbs在单击编辑时才会选择其中一个选项。子选项没有被选中,我无法弄清楚原因。我可以获得正确的显示选项,但无法为我的json对象中返回的任何匹配值设置所选状态。我已经花了8个小时试图解决它并在SOverflow和其他网站上尝试了各种各样的事情,没有一个工作 - 说实话,我没有经验丰富的javascript / ajax。

成功的ajax过程即成功:我正在做以下事情:

var jObj = $.parseJSON(html);

//parentVariations# is the select boxes in the top row where 
//Color, capacity, model options are displayed.
//The trigger fires off my ajax function which is responsible for 
//populating the corresponding child select box with relevant data.

$('#parentVariations1').val(jObj.groupAttr1).trigger('change'); 
$('#parentVariations2').val(jObj.groupAttr2).trigger('change'); 
$('#parentVariations3').val(jObj.groupAttr3).trigger('change'); 

//childVariations# is the child option box, i have the same code for each child
//box but am only showing the first one here for simplicitys sake.
//What I thought I was doing here is getting each option then if the value 
//matches that held in my corresponding json object set that option to selected...
//Doesn't work :'(
$("#childVariations1 option").each(function()
{
if($(this).val() == jObj.childAttr1)
{
      $("#childVariations1 option").attr('selected','selected');
}
});

任何帮助都会非常受欢迎,因为它让我超越了优势。

1 个答案:

答案 0 :(得分:0)

$("#childVariations1 option")是所有选项的数组。您需要指定哪一个:

$("#childVariations1 option").eq(1).attr('selected','selected');

如果是您的情况,请使用for循环并使用索引获取当前位置,而不是使用.each。 (或设置一个柜台)