This code should clear the textarea when there is only spaces and breaklines but it leaves a breakline if you only press enter... I suspect my code that makes enter sendComment and shift+enter breakline for being the misbehaving part...
Javascript:
<script type='text/javascript'>
function sendComment(id)
{
var comMessage = $("#com"+id);
var cmessage = comMessage.val();
cmessage = cmessage.replace(/(\r\n|\n|\r)/gm,"");
cmessage = cmessage.split(' ').join('');
if(cmessage == "")
{
$("#comstatus"+id).html("<br><b style='color:red;border:2px solid red;'>Please type a message</b><br><br>").show().fadeOut(6000);
$('#com'+id).text(cmessage);
$('#com'+id).val(cmessage);
$("#com"+id).html(cmessage);
$("#com"+id).attr("value", cmessage);
}
}
</script>
code for making enter send message and making shift+enter break line
<script type='text/javascript'>
<!--
var isShift=null;
var isNN = (navigator.appName.indexOf("Netscape")!=-1);
var OP = (navigator.appName.indexOf("Opera")!=-1);
if (OP) isNN=true;
var key;
function shift(event){ 开发者_StackOverflow
key = (isNN) ? event.which : event.keyCode;
if (key==16)isShift=1;
}
function process(event,id){
key = (isNN) ? event.which : event.keyCode;
if(document.layers&&event.modifiers==4){
isShift=1;
}
if (key==13&&isShift!=1){
sendComment(id);
}
if (key!=16) isShift=null;
}
//-->
</script>
HTML:
<textarea onkeypress='process(event, $idMe)' onkeydown='shift(event)' onfocus='commentboxfocus($idMe)' onblur='commentboxblur($idMe)' class='text' id='com$idMe' wrap='hard' style='wrap:hard;height:30px;width:100%;position:relative' name='comment'>Type a comment!</textarea>
Hope you can help me! Thanks in advance!
You just need to cancel the event to prevent it from bubbling upwards:
if(cmessage == "")
{
$("#comstatus"+id).html("<br><b style='color:red;border:2px solid red;'>Please type a message</b><br><br>").show().fadeOut(6000);
$('#com'+id).val(cmessage);
return false;
}
Then change the call to:
onkeypress='return process(event, $idMe);'
精彩评论