我正在开发一个项目,我有一个div,其中我有多个div,每个div都有唯一的ID(来自DB),每个div都包含一个用于添加注释的文本框 如下所示
<div id="maindiv">
<div id="@item.resid">
<p>Content1</p>
<input type="text" class="txtarea" resourceid="@item.resid"/>
</div>
<div id="@item.resid">
<p>Content2</p>
<input type="text" class="txtarea" resourceid="@item.resid"/>
</div>
<div id="@item.resid">
<p>Content3</p>
<input type="text" class="txtarea" resourceid="@item.resid"/>
</div>
<div id="@item.resid">
<p>Content4</p>
<input type="text" class="txtarea" resourceid="@item.resid"/>
</div>
。 。 。 。
我正在通过文本框的按键事件添加评论,我遇到的问题是,当我在内侧添加对内容的评论时,然后添加焦点后出现。 我试过专注于文本框甚至在div但没有工作:( 下面是我添加评论的代码
$(".txtarea").keypress(function (e) {
if (e.keyCode == 13) {
if ($(this).val().trim() != "") {
var commentText = $(this).val();
var resourceid = $(this).attr('resourceid');
var divId = "." + resourceid;
$.ajax({
url: ResourceAjaxUrl.AddNewCommentOnResources,
type: "POST",
data: JSON.stringify({ resourceID: resourceid, commentText: commentText }),
dataType: "html",
contentType: "application/json; charset-utf-8",
success: function (Result) {
$('#maindiv').html(Result);
$('#maindiv div#' + divId.split('.')[1]).focus();
$('#maindiv div#' + divId.split('.')[1]).find(".txtarea").focus();
},
error: function (msg) {
alert("Unable to save comment in");
}
});
}
else {
$(this).val('');
$(this).focus();
}
}
});
我已经在开发者工具上看到了focus(),它工作得很好但仍然没有聚焦,我希望如果我在下行(或最后)评论添加评论,焦点将保持在那而不是在顶部< / p>
答案 0 :(得分:0)
您无法在div上设置焦点。它仅适用于表单元素(输入,textareas,按钮等)。
在您尝试查找.txtarea
时,您的问题似乎是选择器中的ID错误:
success: function (Result) {
$('#maindiv').html(Result);
$('#maindiv div#' + divId.split('.')[1]).find(".txtarea").focus();
},
$(' #main div#'+ divId.split('。')[1])。find(“。txtarea”)。focus();
替换为
$(' #maindiv div#'+ divId.split('。')[1])。find(“。txtarea”)。focus();
此外,一旦拥有唯一ID,您就不需要编写$('#maindiv div#' + divId.split('.')[1])
。这就足够了:$('#' + divId.split('.')[1])
(无论如何,对于整个页面,ID必须是唯一的,因此无需指定它位于div
内的#maindiv
)