JQuery专注于TextBox或Div

时间:2012-12-17 12:39:41

标签: jquery asp.net-mvc

我正在开发一个项目,我有一个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>

1 个答案:

答案 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