简体   繁体   English

textarea不能完全清除吗?

[英]textarea doesn't clear totally?

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... 当只有空格和换行符时,此代码应清除文本区域,但是如果您仅按Enter键,它将留下换行符。我怀疑我的代码使enter sendComment和shift + enter换行符成为行为不当的部分...

Javascript: 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 输入发送消息并按Shift + Enter换行符的代码

    <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){  
      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: 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);'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM