0) { var itemNum=$('#tbody tr')。长度+1; var newRow=''+ '项目'+itemNum+''+ ''+ ''+ ''+ ''; $(“#tbody”).append(newRow); } } });,javascript,jquery,html,Javascript,Jquery,Html" /> 0) { var itemNum=$('#tbody tr')。长度+1; var newRow=''+ '项目'+itemNum+''+ ''+ ''+ ''+ ''; $(“#tbody”).append(newRow); } } });,javascript,jquery,html,Javascript,Jquery,Html" />

Javascript 若要将文本字段的光标从活动文本字段移动到键盘上按enter键时新添加的文本字段,仅当活动文本字段已填充时 html 项目 成本 项目1 全部的 0 jquery $('body').on('keyup','.elm',函数(e){ //检查按键是否按下回车键 如果(例如,keyCode!=13){ var总和=0; $('.elm')。每个(函数(){ if($(this.val()!=''&!isNaN($(this.val())){ sum+=parseInt($(this.val()); } }); 元("总计").正文(总和);; } 否则{ var$itemNum=$(“#tbody tr”); if($itemNum.find('input').val().length>0) { var itemNum=$('#tbody tr')。长度+1; var newRow=''+ '项目'+itemNum+''+ ''+ ''+ ''+ ''; $(“#tbody”).append(newRow); } } });

Javascript 若要将文本字段的光标从活动文本字段移动到键盘上按enter键时新添加的文本字段,仅当活动文本字段已填充时 html 项目 成本 项目1 全部的 0 jquery $('body').on('keyup','.elm',函数(e){ //检查按键是否按下回车键 如果(例如,keyCode!=13){ var总和=0; $('.elm')。每个(函数(){ if($(this.val()!=''&!isNaN($(this.val())){ sum+=parseInt($(this.val()); } }); 元("总计").正文(总和);; } 否则{ var$itemNum=$(“#tbody tr”); if($itemNum.find('input').val().length>0) { var itemNum=$('#tbody tr')。长度+1; var newRow=''+ '项目'+itemNum+''+ ''+ ''+ ''+ ''; $(“#tbody”).append(newRow); } } });,javascript,jquery,html,Javascript,Jquery,Html,我使用上面的代码在用户动态输入时添加数值,方法是在键盘上按enter键添加新的文本字段,而不考虑用户输入的输入数量,并自动计算其输出。通过按Enter键,我应该只在用户在前一个textfield中输入值之后才添加新的textfield,并且光标应该自动移动到新的textfield。 但在我的代码中,它只发生在第一个文本字段中,其他文本字段不一样,请帮助我编写代码,因为我对javascript是新手。 嘿,看起来您只想检查最后一个输入字段的长度。所以只需将.last()添加到选择器:var$ite

我使用上面的代码在用户动态输入时添加数值,方法是在键盘上按enter键添加新的文本字段,而不考虑用户输入的输入数量,并自动计算其输出。通过按Enter键,我应该只在用户在前一个textfield中输入值之后才添加新的textfield,并且光标应该自动移动到新的textfield。 但在我的代码中,它只发生在第一个文本字段中,其他文本字段不一样,请帮助我编写代码,因为我对javascript是新手。

嘿,看起来您只想检查最后一个输入字段的长度。所以只需将
.last()
添加到选择器:var$itemNum=$('#tbody tr').last()

$('body').on('keyup','.elm',函数(e){
//检查按键是否按下回车键
console.log(例如keyCode);
如果(例如,keyCode!=13){
console.log('Enter-detected');
var总和=0;
$('.elm')。每个(函数(){
if($(this.val()!=''&!isNaN($(this.val())){
sum+=parseInt($(this.val());
}
});
元("总计").正文(总和);;
}
否则{
var$itemNum=$('#tbody tr').last();
if($itemNum.find('input').val().length>0)
{
log('应该添加新的输入');
var itemNum=$('#tbody tr')。长度+1;
var newRow=''+
'项目'+itemNum+''+
''+
''+
''+
'';
$(“#tbody”).append(newRow);
}
}
});

我扩展了David Karlsson的答案,在else块的最后一行添加了以下代码:

$('body').on('keyup','.elm',function(e){
//Check Key Press is Enter
    console.log(e.keyCode);
if (e.keyCode != 13) {
    console.log('Enter detected');
    var sum = 0;
    $('.elm').each(function() {
        if($(this).val() != '' && !isNaN($(this).val())){
            sum += parseInt($(this).val());
        }
    });

    $('#total').text(sum);
}
else{
var $itemNum = $('#tbody tr').last();

if($itemNum.find('input').val().length > 0) 
{
    console.log('should add new input');
    var itemNum = $('#tbody tr').length + 1;
    var newRow = '<tr>'+
        '<td>Item'+itemNum+'</td>'+
        '<td>'+
            '<input type="text" class="elm">'+
        '</td>'+
    '</tr>';
    $('#tbody').append(newRow);
}
}
});
然后,新添加的行的输入获得焦点


只需将last()添加到$item num row中这是不正确的,只是我在运行这个JSFIDLE时没有out.last();这对我来说很好。我希望他需要在页面上包含jquery脚本文件。谢谢先生,这是我两天以来一直在努力做的事情。最后,你帮助我做了这件事。请向我解释setTimeout(function(){$('.elm').last().focus();},0)需要什么@David Karlsson,如果我想重置为初始位置,即通过按键盘上的delete键移除所有附加文本字段,且仅未填充初始文本字段,我应该添加什么?如果我想重置为初始位置,即通过按键盘上的delete键移除所有附加文本字段,且仅未填充初始文本字段,我想您需要检查键46(delete)的keyup事件,然后使用以下选择器删除除第一行以外的所有行:$(“#tbody tr:not(:first)”)。删除();之后是$('#tbody tr:first child td:last child input').val(“”);
$('body').on('keyup','.elm',function(e){
//Check Key Press is Enter
if (e.keyCode != 13) {
    var sum = 0;
    $('.elm').each(function() {
        if($(this).val() != '' && !isNaN($(this).val())){
            sum += parseInt($(this).val());
        }
    });

    $('#total').text(sum);
}
else{
var $itemNum = $('#tbody tr');
if($itemNum.find('input').val().length > 0) 
{
    var itemNum = $('#tbody tr').length + 1;
    var newRow = '<tr>'+
        '<td>Item'+itemNum+'</td>'+
        '<td>'+
            '<input type="text" class="elm">'+
        '</td>'+
    '</tr>';
    $('#tbody').append(newRow);
}
}
});
$('body').on('keyup','.elm',function(e){
//Check Key Press is Enter
    console.log(e.keyCode);
if (e.keyCode != 13) {
    console.log('Enter detected');
    var sum = 0;
    $('.elm').each(function() {
        if($(this).val() != '' && !isNaN($(this).val())){
            sum += parseInt($(this).val());
        }
    });

    $('#total').text(sum);
}
else{
var $itemNum = $('#tbody tr').last();

if($itemNum.find('input').val().length > 0) 
{
    console.log('should add new input');
    var itemNum = $('#tbody tr').length + 1;
    var newRow = '<tr>'+
        '<td>Item'+itemNum+'</td>'+
        '<td>'+
            '<input type="text" class="elm">'+
        '</td>'+
    '</tr>';
    $('#tbody').append(newRow);
}
}
});
     $('#tbody tr:last-child td:last-child input').focus();