1

我有一个动态表格生成服务器端,其中包含一些 HTML 标记、输入字段以及纯文本的单元格。我还有一个滑块小部件,它允许用户为单元格中的数字添加百分比。滑块进行 ajax 调用,该调用返回一个有效的 XML 文件,该文件包含表中每个单元格 (td) 的一个节点。所有这一切都很好。

问题是我不确定如何同时遍历 XML 和单元格。我正处于检索 XML 数据工作正常的地步。

$('#point_value').live("change", function(){
    var this_sct=$(".program_grid");

    $.ajax({
        type:'POST',
        url:"ajax/points_update.php",
        data:{
            pr_id:$("#programid").val(),
            point:$("#point_value").val(),
            calc_lease_amount:$("#calc_lease_amount").val(),
            calc_lease_amount_extra_dollar:$("#calc_lease_amount_extra_dollar").val()
        },
        context:document.body,
        dataType:"xml",
        success:function(xml){
            $(xml).find('payment').each(function(){
            ... this is where the code needs to loop through each <td>
            ... and update the existing values with the new XML values

            >> doesn't work >> $(this_sct).next('input[name^="elb"]').val($(this).find("payment_h").text());                

            ... replace dynamically named input 'elb##' value with new number
            ... each <td> will have an input  field needing to be updated
            ...   <td><input name='elb1' value='123.45'></td>
            ...   <td><input name='elb2' value='419.11'></td>

        }
    });
});

我尝试<input>通过find输入以“elb”开头的输入并将其 .val() 更改为 XML 中的“payment_h” text() 字段来更新。

XML 示例文件

<?xml version="1.0" encoding="iso-8859-1"?>
<program>
<payment>
    <payment_h>3018.48</payment_h>
    <payment_l>2018.48</payment_l>
    <bo_1>100.62</bo_1>
    <bo_2>17.45</bo_2>
</payment>
<payment>
    <payment_h>2269.74</payment_h>
    <payment_l>1269.74</payment_l>
    <bo_1>75.66</bo_1>
    <bo_2>13.12</bo_2>
</payment>
<payment>
    <payment_h>1897.20</payment_h>
    <payment_l>897.20</payment_l>
    <bo_1>63.24</bo_1>
    <bo_2>10.97</bo_2>
</payment>
</program>

HTML 示例文件

<table>
<tr>
    <th></th>
    <th>header 1</th>
    <th>header 2</th>
    <th>header 3</th>
</tr>
<tr>
    <th>row 1</th>
    <td><input type="hidden" name='elb7' value='123.45'>123.45</td>
    <td><input type="hidden" name='elb8' value='823.15'>823.15</td>
    <td><input type="hidden" name='elb9' value='1123.95'>1123.95</td>
</tr>   
<tr>
    <th>row 2</th>
    <td><input type="hidden" name='elb10' value='2123.45'>2123.45</td>
    <td><input type="hidden" name='elb11' value='3123.45'>3123.45</td>
    <td><input type="hidden" name='elb12' value='4123.45'>4123.45</td>
</tr>   
</table>

我很接近,但需要一些方向。

提前致谢。

4

2 回答 2

0

似乎你很接近(我几乎不敢相信这很容易)。改变你的成功功能如下:

   success:function(xml){
                var pos =0;
                $(xml).find('payment').each(function(){
                    var e = $(this_sct).find('input[name^="elb"]')[pos];
                    $(e).val($(this).find("payment_h").text());
                    pos++;
                })

有一些改进可能,但这应该表明方式。这假定“this_sct”是应该更改的 td 的父 tr 元素。

于 2013-05-21T17:47:53.393 回答
0

也许有点短:

success : function(xml){
    $(xml).find('payment').find("payment_h").each(function(ind){
         $('input[name^="elb"]').eq(ind).val($(this).text());
    });
}
于 2013-05-21T18:09:23.840 回答