【问题标题】:How to focus on textarea based on click?如何基于点击关注文本区域?
【发布时间】:2011-05-18 18:40:52
【问题描述】:

我有一些代码,当用户单击“添加评论”链接时,它会在它旁边看起来某个命名的 div 并向下滑动该 div。在那个div里面我有一个textarea。

我的目标是在用户单击“添加评论”链接时将焦点设置在文本区域上。 我遇到的问题是我将有多个 cmets/textareas/add 评论链接,我需要它,所以当您点击“添加评论”时,它会关注相应的 textarea。

这是我目前所拥有的:

jQuery

$(".add-comment-btn").click(function(){
    $(this).next(".inline-comment-form").slideToggle(200);
    $(this).next(".inline-comment-form textarea").focus();
    return false;
});

HTML

<a class="add-comment-btn" href="#">Add Comment</a>         

<div class="inline-comment-form">
<form action="" method="post">
        <div class="textarea">
            <textarea class="inline-comment-textarea" name="comment-textarea"></textarea>
        </div>
        <input value="SUBMIT" name="submit-inline-comment" class="form-btn" type="submit">

    </form>
</div><!--/Inline Comment Form -->  

编辑:我更新了代码以添加 Add Comment 链接并将返回 false 移动

【问题讨论】:

  • 你能发布一个更大的包含添加评论的 HTML 垃圾吗?我想给你一个带有演示的 jsbin 链接,但我想确保 HTML 是相同的 :)
  • 你的意思是在焦点调用之前返回 false 吗?这当然行不通。
  • 是的,那是真正的混合,如果您可以将 return false 移动到最后,请执行此操作。如果没有,请尝试将您的 更改为 或其他内容并设置样式
  • @Oscar - 抱歉,我认为最上面的代码第一次被剪掉了。 @John - 感谢您提供的信息。我没有意识到这一点。所以如果我使用 return false;它应该在最后吗?
  • 是的,return false 基本上就像是休息;或杀死;在其他语言中。它会停在那里并跳出当前范围(如果我错了 StackOverflows 上的其他人,请纠正我)

标签: jquery focus textarea


【解决方案1】:

http://jsfiddle.net/Frgxv/

$(".add-comment-btn").click(function(){
    $(this).next(".inline-comment-form").slideToggle(200)
           .find("textarea").focus();

    return false;
});

next 仅适用于兄弟姐妹,textarea 不是兄弟姐妹。

【讨论】:

  • 酷,这正是我想要的。依稀记得next那个质量,谢谢提醒。
【解决方案2】:

嘿,试试看:http://jsfiddle.net/jackrugile/XNkES/

我正在使用以下似乎有效的代码:

$(this).next(".inline-comment-form").slideToggle(200).find('textarea').focus();

【讨论】:

  • 太棒了!这正是我想要的!谢谢jackrugile
猜你喜欢
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 2010-10-22
  • 1970-01-01
  • 2015-07-31
相关资源
最近更新 更多