1

4つの選択ボックスを使用して製品を検索しています。jQueryを使用して、ajax呼び出しを使用して各ボックスにデータを入力します。これはすべて機能しますが、ここで、事前に定義された検索条件を使用して(使用する選択されたオプションがすでにわかっているため)、データを入力します。

例:製品ソース(フレッシュ、フローズン)フレッシュが選択されている場合、このオプションに依存するリストが次の選択ボックスに表示されます。製品タイプ(果物...)製品(リンゴ...)色(赤..)など

次に、選択した製品を使用して在庫検索が完了するため、この場合は、id=5のフレッシュフルーツアップルレッドになります。

これは問題なく機能しますが、ここで、Product Source、Product type、Product、Colourを検索に渡して、選択ボックスとその他のオプションを入力します。私が抱えている問題は、選択ボックスの変更イベントで使用して、次がロードされる前に起動する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
    {

    }
})
 }

編集-正常に製品を検索しますが、既知の製品を使用してフィルターに事前入力する必要があります。すべてのフィルター値があります。一度に1つの選択を行い、ボックスがajaxを介して入力されるのを「待機」すると思います。

4

2 に答える 2

0

問題がコード内からを変更しselectてajax呼び出しをトリガーする方法である場合は、次のように実行できます。

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

change問題を正しく理解していれば、値を変更した後にトリガーするだけで十分です。

于 2012-11-13T10:42:09.267 に答える
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 に答える