JavaScript添加新行并使用下拉值中的数据填充新行输入

JavaScript添加新行并使用下拉值中的数据填充新行输入,javascript,jquery,html,function,Javascript,Jquery,Html,Function,我希望你能帮我解决我遇到的Javascript问题,我已经盯着这个问题看了好几天了,我就是想不出来 我有一个脚本,它拆分选项下拉列表的值,并用拆分后的值填充某些字段 然后,我有了一个“添加订单行”超链接,可以向表中添加新行,但我希望上述功能也能在任何新行上实现,但什么都不会发生 我在中重新创建了这个 $(窗口).load(函数(){ var selectEl=document.getElementById('part_selection'); 选择el.onchange=函数(){ //var

我希望你能帮我解决我遇到的Javascript问题,我已经盯着这个问题看了好几天了,我就是想不出来

我有一个脚本,它拆分选项下拉列表的值,并用拆分后的值填充某些字段

然后,我有了一个“添加订单行”超链接,可以向表中添加新行,但我希望上述功能也能在任何新行上实现,但什么都不会发生

我在中重新创建了这个

$(窗口).load(函数(){
var selectEl=document.getElementById('part_selection');
选择el.onchange=函数(){
//var input1=document.getElementsByName('PART_NO');
var input2=document.getElementById('PART_DESCRIPTION');
var input3=document.getElementById(“部分价格”);
var input4=document.getElementById('UNIT_MEAS');
var val=该值;
var parts=val.split(“”);
/*input1.value=零件[0]*/
input2.value=零件[1];
input3.value=零件[2];
input4.value=零件[3];
}
});
$(函数(){
var计数器=1;
$('a.add-line')。在('click',function()上
{
计数器++;
$(this).prev('table.orderlinelist').find('tr').last().clone().find('input').val('').end().find('input.ORDER_LINE_NO').val(counter.end().appendTo('table.orderlinelist');
});
});
线
部分
零件说明
单价
数量
计量单位
行总数
选择一个零件
5461
你能给我指一下正确的方向吗


干杯

您正在复制元素的标识符,并指定此事件更改特定的“选择”。 你最好以这种方式与类一起工作


以下是您可以执行的步骤:

  • 首先将
    class
    属性添加到
    input
    标记,而不是
    ID

  • 使用jQuery处理动态事件

  • 使用最近的查找当前行

  • 然后使用jQuery
    find
    ,根据其
    属性查找输入

  • 然后继续代码场景的其余部分


    我对您的代码执行了以下步骤:

    $(document).on("change", "table.orderlinelist .part_selection", function () {
        var jrow = $(this).closest('tr');
        var input2 = jrow.find('.PART_DESCRIPTION');
        var input3 = jrow.find('.PART_PRICE');
        var input4 = jrow.find('.UNIT_MEAS');
        var val = this.value;
        var parts = val.split("_");
        input2.val(parts[1]);
        input3.val(parts[2]);
        input4.val(parts[3]);
    });
    

    这是您的工作

    首先,当您添加行时,停止使用id,id是唯一的,并且只使用一次,当您复制行时,您将有多个相等的id。
    $(".orderlinelist").on("change", ".part_selection", function (e) {});
    
    $(document).on("change", "table.orderlinelist .part_selection", function () {
        var jrow = $(this).closest('tr');
        var input2 = jrow.find('.PART_DESCRIPTION');
        var input3 = jrow.find('.PART_PRICE');
        var input4 = jrow.find('.UNIT_MEAS');
        var val = this.value;
        var parts = val.split("_");
        input2.val(parts[1]);
        input3.val(parts[2]);
        input4.val(parts[3]);
    });