我需要在输入中按Enter键以自动触发对下一个输入元素的焦点。我的代码适用于静态元素。但是对于动态创建的元素,它会失败。
以前,我用来监视动态创建的元素上的事件的方法是通过引用静态的锚元素。我曾经这样做:
$('body').on('click', '#BtnDiscard', function() {
$("#DiscardModal").modal();
});
对于下面的代码,请提出修改建议,以便我赶上该事件:
现有代码:
var $input = $('input[type=text]');
$input.on('keyup', function (e) {
var myClass = $(this).attr("class");
console.log(myClass);
if (e.which === 13) {
if (myClass.indexOf("DurationUnits") != -1) {
AddingRow();
id = this.id;
console.log("id is " + id);
var newel = id.replace('durnunit', '');
newel = parseInt(newel);
newel = newel + 1;
newel = newel.toString();
var myid = "#brand" + newel;
$(myid).focus();
return true;
} else {
var ind = $input.index(this);
$input.eq(ind + 1).focus()
}
}
});
我尝试的代码不起作用:
var $input = $('input[type=text]');
$('body').on('keyup', 'input[type=text]', function (e) {
var $input = $(this);
var myClass = $(this).attr("class");
console.log(myClass);
if (e.which === 13) {
console.log('Pressed enter');
if (myClass.indexOf("DurationUnits") != -1) {
AddingRow();
id = this.id;
console.log("id is " + id);
var newel = id.replace('durnunit', '');
newel = parseInt(newel);
newel = newel + 1;
newel = newel.toString();
var myid = "#brand" + newel;
$(myid).focus();
return true;
} else {
var ind = $input.index(this);
console.log('Index is ' + ind);
$input.eq(ind + 1).focus()
}
}
});