Javascript 仅使用<;br>;从提交
我试图建立一个评论部分,允许在前端即时预览 除了提交评论后的行为外,一切正常 在我的代码中,当用户在textarea中按Enter键时,我触发提交注释,然后通过重置值清除textarea 但是,即使我通过声明e.preventDefault()禁用了enter键的默认行为,当反复按enter键时仍会插入新行 此外,即使在提交之前我检查了textarea值的长度,我的代码也只接受有效内容为“\n”的注释,因此,如果用户在textarea中多次按enter键,则可以提交“空”注释 请帮助,我想不出解决方案,我正在考虑添加一个post按钮,用户必须手动单击它才能提交 我在小提琴上的代码: 我的代码:Javascript 仅使用<;br>;从提交,javascript,jquery,html,textarea,Javascript,Jquery,Html,Textarea,我试图建立一个评论部分,允许在前端即时预览 除了提交评论后的行为外,一切正常 在我的代码中,当用户在textarea中按Enter键时,我触发提交注释,然后通过重置值清除textarea 但是,即使我通过声明e.preventDefault()禁用了enter键的默认行为,当反复按enter键时仍会插入新行 此外,即使在提交之前我检查了textarea值的长度,我的代码也只接受有效内容为“\n”的注释,因此,如果用户在textarea中多次按enter键,则可以提交“空”注释 请帮助,我想不出解
$(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有这个有用的内置函数。谢谢