Javascript 在输入empty时,将焦点放在textarea上

Javascript 在输入empty时,将焦点放在textarea上,javascript,jquery,html,Javascript,Jquery,Html,我需要清空并专注于按键上的文本区域,按键是enter。我想我写的代码是正确的,但有时文本区域变空,但没有焦点,有时焦点发生,但清空这个对象时没有运气。我使用了许多不同的代码,但没有运气 这是我的js: <script> $(document).ready(function() { $("#data").focus(function() { $(this).empty(); $(this).focus(); }); }) // when th

我需要清空并专注于按键上的文本区域,按键是enter。我想我写的代码是正确的,但有时文本区域变空,但没有焦点,有时焦点发生,但清空这个对象时没有运气。我使用了许多不同的代码,但没有运气

这是我的js:

<script>
$(document).ready(function() {
    $("#data").focus(function() {
    $(this).empty();
    $(this).focus();
    });
})


    // when the client hits ENTER on their keyboard
    $('#data').keypress(function(e) {


    $this = $(this);
    if($this.val().length == 1)
    {
        var x =  new RegExp("[\x00-\x80]+"); // is ascii

        var isAscii = x.test($this.val());

        if(isAscii)
        {
           $("#data").css({"direction": "ltr", "text-align": "left"});
        } else {
            $("#data").css({"direction": "rtl", "text-align": "right"});
        }
    }


        if (e.shiftKey && e.keyCode == 13) {
            $(this).val($(this).val() + "\n");
            return;

          }
            if(e.which == 13) {
                if($this.val().length == 0){
                    alert('your value is empty')
                }

                var now = time();
                if(now+0.5 > counter){
                counter = now;
                $(this).blur();
                $('#datasend').focus().click();
            }else{
            }
            }
        });
    });

$(文档).ready(函数(){
$(“#数据”).focus(函数(){
$(this.empty();
$(this.focus();
});
})
//当客户端在键盘上按ENTER键时
$(“#数据”)。按键(功能(e){
$this=$(this);
如果($this.val().length==1)
{
var x=new RegExp(“[\x00-\x80]+”);//是ascii
var isAscii=x.test($this.val());
如果(isAscii)
{
$(“#数据”).css({“方向”:“ltr”,“文本对齐”:“左”});
}否则{
$(“#数据”).css({“方向”:“rtl”,“文本对齐”:“右”});
}
}
如果(e.shiftKey&&e.keyCode==13){
$(this.val($(this.val()+“\n”);
返回;
}
如果(e.which==13){
如果($this.val().length==0){
警报('您的值为空')
}
var now=time();
如果(现在+0.5>计数器){
计数器=现在;
$(this.blur();
$('#datasend')。焦点()。单击();
}否则{
}
}
});
});
这是我的html部分:

    <div class="wrap">
    <div class="rooms">
    <div class="clear"></div>
        <div class="roomsicon">
chatrooms
        </div>
        <ul id="rooms">
        </ul>
    </div>
    <div class="chat_box_container">
    <div class="chat_box" id="mydiv">
    <div id="conversation"></div>
    </div>
    <div class="input_field">
        <textarea id="data" placeholder="type your text ... " ></textarea>
        <input type="button" id="datasend" value="send" />
    </div>

    </div>
    <div class="users">
        <div class="usersicon">online users </div>

        <ul id="users">
        </ul>
    </div>

    </div>
    <!-- clear float -->
    <div class="clear"></div>

聊天室
在线用户
empty()
不会删除该值

设置
.val(“”)

在焦点事件中调用焦点基本上会导致一个无休止的循环。不太好

$("#data").focus(function() {
    $(this).val('');
});

还有,为什么要重新设计元素上已有的HTML5占位符属性?

代码中没有id为“data”的元素。此外,当焦点不在元素内部时,您将在#数据元素上绑定
按键
,当然不会触发。
尝试将事件绑定到文档而不是文本区域。

有一个自动聚焦html5标记(布尔值,不需要值),它将自动将焦点放在它设置的任何输入/文本区域上:

这里有大量js回退代码:

想象一下,如果js可用,表单输入上的自动聚焦跨浏览器兼容,如果js不可用,支持HTML5的浏览器仍然显示自动聚焦。。现在,如果您确实需要自动对焦功能,您唯一缺少的是“按a键”来自动对焦,因此您需要使用enter键触发上面的代码,仅执行自动对焦看起来更优雅,虽然我知道,如果禁用用户无法控制光标在页面上的位置,那么从这个角度看键的执行可能会更好,这会让禁用用户感到恼火,但如果这会使禁用用户难以导航,那么有一种方法可以禁用其端的“自动聚焦”属性,这样就不用担心太多了


对于html5,accesskey属性正在讨论中,它已被删除,但再次被使用,这将是使用键来关注表单元素的最佳方式,但正如我所说,它正在讨论中,可以再次删除:

我使用了它,但运气不佳。。我会分享提琴。我需要一个像facebook一样的焦点。然后当用户在聊天室中发布他的信息时,另一个焦点会在聊天室中发生。我应该如何实现这一点?enter的键码是13.e。它==13。我想我也用了'13',无法分享提琴,因为它是一个聊天系统,当我在聊天室中看到sumbit聊天信息时,它会出现在聊天室中。你是否试图删除该选项占位符文本???@epascarello没有,但它在textarea中又添加了一行,我不知道为什么我需要在回车时将此textarea清空,以便为下一条文本消息做好准备。为了解释更多信息,当用户按回车键时,消息将发布到聊天框中,用户将在聊天框中看到消息,另一个焦点将出现在textarea中,以便用户发布另一条消息聊天信息是的,有,“我想我有……这是你的意思吗?”?我只是想指出,这不在你发布的代码中。