嗨,我在表格上有表格。当页面加载被触发时,我将焦点设置为第一个输入[type ='text']。我用ajax发布表单,如果一切正常,我将新行添加到表的顶部。现在我无法将焦点设置为新插入的行。这是我的javascript代码:
$(document).keypress(function (e) {
var key_code = e.which;
if (key_code == 13) {
$.ajax({
type: "POST",
url: "AddNewPayPackage",
data: $("#AddPackPayment").serialize(),
dataType: "text/plain",
success: function (response) {
if (response == "Saved") {
$('#myTable tbody tr:first input:text').removeAttr("tabindex");
$.get('AddNewPayPackage', function (data) {
$('#myTable tbody tr:first').before("<tr>" + data + "</tr>");
});
$('.input-validation-error').removeClass('input-validation-error');
$("form :input[type='text']:first").focus();
}
else {
$("#myTable tbody tr:first").html(response);
}
}
});
}
});
答案 0 :(得分:6)
问题是,$.get()
回调中添加的元素稍后会添加 ,当服务器响应带回内容时......所以你需要关注之后在回调中发生......就像这样:
$.get('AddNewPayPackage', function (data) {
$('#myTable tbody tr:first').before("<tr>" + data + "</tr>");
$("form :input[type='text']:first").focus(); //needs to run here
});
$('.input-validation-error').removeClass('input-validation-error');
答案 1 :(得分:1)
看起来像是一个错字:
$("form :input[type='text']:first").focus();
应该是
$("form input[type='text']:first").focus();