0

私は、php、ajax、および tablesorter プラグインを使用して完全に生成するテーブルを持っています。変更が必要な場合にユーザーがオプションを選択できるように、いくつかの入力フィールドをドロップダウン ボックスにしたいと考えています。このすべてをデータベースに保存する必要があります。これが私がこれまでに持っているものです:

    $('#getInfo').live('click', function() {
//clear table before search
    $("#inventoryUpdate tbody tr").remove();
    $('#messageInv').html('Please be patient, this might take a minute');
$.ajax({
    type: "POST",
    async: true,
    url: "getInventory.php",
    dataType: "json",
    data: ({skuStart: $("#startSkuRange").val(), skuEnd: $("#endSkuRange").val(), processDate: $("#processDate").val(),
           source: $("#source").val()}),
    success: function(data){
        $('#messageInv').hide(); 
        //console.log(data);
                    var myselectoptions = ''; 
        if(data.isbn2 === null){
                $("#inventoryUpdate").append('<tr><td>No Records Found</td></tr>');
            }else{
        for(var x=0;x<data.isbn2.length;x++)
                {
          $.each(data.defect2[x], function(index, val)
            {
             myselectoptions += '<option value="'+data.defect2[x][index].option+'">'+data.defect2[x][index].option+'</option>';
            });
        $("#inventoryUpdate").append('<tr><td id="tableSKU">'+data.sku[x]+'</td><td id="tableISBN">'+data.isbn2[x]+
                 '</td><td><input type="text" id="tableQuantity" value="'+data.quantity[x]+
                 '"/></td><td><select id="tableDefect">'+myselectoptions+
                 '"</select></td><td><input type="text" id="tableSource" value="'+data.source[x]+
                 '"/></td><td><input type="text" id="tableFeature" value="'+data.feature[x]+
                 '"/></td><td><input type="text"  id="tableLocation" value="'+data.location[x]+
                '"/></td><td><input type="text" id="tableProcessDate" value="'+data.processDate[x]+
                '"/></td><td><input type="text" id="tableBookType" value="'+data.booktype[x]+
                '"/></td><td><input type="text" id="tableCreatedBy" value="'+data.created[x]+
                '"/></td><td><input type="text" id="tableModifiedBy" value="'+data.modified[x]+
                '"/></td></tr>');
                                    }
        $("#inventoryUpdate").trigger("update");
            } // end of else statement
    } // end of success function
});// end of ajax call
}); // end of inventory update function

tableDefect と tableFeature の入力を、動的に入力されるドロップダウン ボックスにして、デフォルトでデータベースからの現在の情報を取得したいと考えています。たとえば、データベースからの欠陥が「ダスト ジャケットの裂け目」である場合、それが選択されるオプションになりますが、データベースからの残りのオプション (欠陥なし、水による損傷など) も必要です。変更する必要があります。入力タイプを選択に変更する必要があると思いますが、どうすれば入力できますか? 情報を取得するには、データベースをもう一度呼び出す必要がありますか? これはこのプラグインでも可能ですか?
編集:以下の回答に基づいて新しいコードを貼り付けました。最初のレコードには19の「オプション」(返される実際の値ではなく未定義とだけ表示されます)、2番目のレコードには38など、19しかないはずです。オプション。

4

1 に答える 1

2

私が正しく読んでいる場合は、次のように置き換え<input type="text"......>て ください<select id=...><option>...</option></select>

選択を動的に設定する限り、いくつかの異なる方法で処理できます。あなたのajaxでは、おそらく既存のものを変更することで選択値を取得できます

data.defect[x]多次元オブジェクトに変換するため、単なる文字列ではなく、バックエンドで JSON に変換される配列を出力して、オブジェクトが次のようになるようにします。

defect[{"option":"value"},{"option":"value"},{"option":"value"},{"option":"value"}]

連続部分でテーブルを構築するときに、そのオブジェクトをループします。あなたは基本的に今と同じことをするでしょう..を除いて. あなたの選択は次のようになります

var myselectoptions = '';
   $.each(data.defect[x], function(index, val)
          {
             myselectoptions += '<option value="'+data.source[x][index].option+'">'+data.source[x][index].option+'</option>';
          });
'"/></td><td><select id="tableDefect">'+myselectoptions+'....

これは純粋な概念であり、私はそれをテストしていません。具体的にニーズに合わせて微調整する必要がある可能性がありますが、これは、やりたいことを処理できる数少ない方法の 1 つの中心的な概念であり、目的に適合します。あまり変更する必要なく、現在行っています。

于 2012-08-15T14:58:52.320 に答える