Javascript 仅使用<;br>;从提交

Javascript 仅使用<;br>;从提交,javascript,jquery,html,textarea,Javascript,Jquery,Html,Textarea,我试图建立一个评论部分,允许在前端即时预览 除了提交评论后的行为外,一切正常 在我的代码中,当用户在textarea中按Enter键时,我触发提交注释,然后通过重置值清除textarea 但是,即使我通过声明e.preventDefault()禁用了enter键的默认行为,当反复按enter键时仍会插入新行 此外,即使在提交之前我检查了textarea值的长度,我的代码也只接受有效内容为“\n”的注释,因此,如果用户在textarea中多次按enter键,则可以提交“空”注释 请帮助,我想不出解

我试图建立一个评论部分,允许在前端即时预览

除了提交评论后的行为外,一切正常

在我的代码中,当用户在textarea中按Enter键时,我触发提交注释,然后通过重置值清除textarea

但是,即使我通过声明e.preventDefault()禁用了enter键的默认行为,当反复按enter键时仍会插入新行

此外,即使在提交之前我检查了textarea值的长度,我的代码也只接受有效内容为“\n”的注释,因此,如果用户在textarea中多次按enter键,则可以提交“空”注释

请帮助,我想不出解决方案,我正在考虑添加一个post按钮,用户必须手动单击它才能提交

我在小提琴上的代码:

我的代码:

$(document).ready(function(){
    $('#comment-input').keydown(function(e){
        var commentContent = $(this).val()
        if (e.which == 13) {e.preventDefault()}
        if (e.which == 13) {
            e.preventDefault()
            if (commentContent.length != 0) {
            $('#comment').append(commentContent)
            $(this).val('') 
        }

        else {
            alert('Comment is empty')} /*This line is not working properly*/
        }       
    })
})

这可能会解决您的问题:

if (event.keyCode == 10 || event.keyCode == 13){ 
    event.preventDefault();
}

尝试将代码更改为

$(document).ready(function(){
    $('#comment-input').keydown(function(e){
        var commentContent = $(this).val();
        if (e.which == 13) {
            if (commentContent.trim()){
                $('#container').append("<p>"+commentContent+"</p>");
                $(this).val('');
            }
            else {alert('Area is empty');}
        }        
    })
})
$(文档).ready(函数(){
$(“#注释输入”).keydown(函数(e){
var commentContent=$(this.val();
如果(e.which==13){
if(commentContent.trim()){
$(“#容器”)。追加(“”+commentContent+”

”); $(this.val(“”); } else{alert('区域为空');} } }) })
请注意“.trim()”是一个javascript字符串方法


您可以在这里的jsfiddle中尝试:

将该行的
}
替换为
然后重试…非常好的解决方案!它甚至防止了提交新注释时光标向下移动一行的不必要行为!谢谢先生,这也是一个很好的解决方案,谢谢您的帮助。我不知道JS有这个有用的内置函数。谢谢