1

我正在使用 4 个选择框搜索产品,使用 jQuery 我使用 ajax 调用填充每个框。这一切都有效,但是我现在想使用预定的搜索条件(因此它已经知道要使用哪些选定的选项)来填充。

例如,产品来源(新鲜、冷冻) 如果选择新鲜,则在下一个选择框中填充取决于此选项的列表。产品类型(水果...) 产品(苹果...) 颜色(红色...)等

然后使用所选产品完成库存搜索,因此在这种情况下,它将是 Freshfruit apples red,其 id = 5。

这很好用,但现在我想将产品来源、产品类型、产品、颜色传递到搜索中,它会填充选择框和其他选项。我遇到的问题是我使用选择框上的更改事件来触发在加载下一个之前触发的 ajax。

我希望这是有道理的:S

     $("#form_model").change(function(){
    var val = $(this).val();
    if (val != '')
   populateStockItems($("#form_cat").val(),$("#form_sup").val(),val);                  
})

  function  populateStockItems(proid,suppid,modelid){
    var datain ={
    'ProdCode':proid,
    'SuppCode':suppid,
    'Range':modelid
};
getAjax('stockSearch',datain,function(data){

    if(data.result=="success"){             
        var catcbb = $("#form_item");
        catcbb.selectmenu('enable');
        catcbb.empty();
        catcbb.append($('<option></option>').attr("value", '').text(''));
        $.each(data[0].items, function () {
            catcbb.append($('<option></option>').attr("value", this.itemCode).text(this.itemDescription));
        });
        if (data[0].items.length ==1)
            catcbb.get(0).selectedIndex = 1
        catcbb.trigger("change");
    }
    else
    {

    }
})
 }

编辑-它可以很好地搜索产品,但我现在需要使用已知产品预填充过滤器,我拥有所有过滤器值。我想我会一次选择一个,然后“等待”通过 ajax 填充该框。

4

2 回答 2

0

这就是我所做的,将选择框的默认值设置为随机且从未使用过的值,例如 hhg&hg43 如果该选择框的值 = hhg&hg43 则 ajax 查询尚未完成。

var control =$('#form_cat');
    if(control.first().val()=='hhg&hg43')
        waitForStock(control)
    if(control.first().val()!='hhg&hg43')
    {
        control.val(ProductGroupCode);
        control.trigger("change");
        populateStockSuppliers(control.val());
    }
    else if (control.first().val()=='hhg&hg43'){
        alert('Error getting category');
    }

 function waitForStock(control){
for ( var i=0;i>20 ;i++) 
{
    if(control.val()!='hhg&hg43')
        return;
    window.setTimeout(waitForStock, 300);
} }
于 2012-11-16T09:23:16.840 回答
0

如果问题是如何select从您的代码中更改 a 并触发 ajax 调用,您可以这样做:

$('#products').val( 5 ).change();
 /* OR */
 $('#products').val( 5 ).trigger('change');

如果我正确理解问题,修改值后触发change应该是你所需要的

于 2012-11-13T10:42:09.267 回答