0

我正在做一个项目,我有一个 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() 行,它工作正常但仍然没有集中注意力,我希望如果我在不利(或最后)评论上添加评论,焦点将停留在上面而不是放在顶部

4

1 回答 1

0

您不能将焦点设置在 div 上。它仅适用于表单元素(输入、文本区域、按钮等)。

看起来您的问题是尝试查找时选择器中的 ID 错误.txtarea

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位于 inside #maindiv

于 2012-12-17T12:49:36.233 回答