1. 程式人生 > >android 手機輸入對中文輸入事件的響應

android 手機輸入對中文輸入事件的響應

2011-09-19

周海漢 abloz.com

2011-09-19

用javascript指令碼寫了個input的textarea和text輸入文字時統計字數的指令碼,但發現在android和iphone手機中,輸入中文事件計數不響應。但英文數字和標點符號則沒有問題。

於是寫了個記錄輸入事件的指令碼:

<html>
<head>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.3.min.js" type="text/javascript"></script>
<script type="text/javascript"
> $(document).ready(function() { var logA = $("#Log"); $("#txtTest") .bind("keypress", function (e) { logA.val(logA.val()+" KeyPress: " + e.which ); }).bind("keydown", function (e) { logA.val(logA.val()+" KeyDown: " + e.which ); }).bind("keyup", function (e) { logA.val
(logA.val()+" Keyup: " + e.which ); }).bind("input", function (e) { logA.val(logA.val()+" Input!n"); }); $("#btnClear").click(function() { logA.val(""); }); }); </script> </head><body> <form action="#" method="get"> <textarea style=" height: 100px; width:100%;" id="txtTest"
></textarea> <input type="button" id="btnClear" value="clear"></input> </form> <textarea style="border: 1px solid red; font-size: 9pt; height: 100px; width:100%" id="Log"></textarea> </body> </html>

執行該html頁面,發現如果輸入英文數字和符號,會有

KeyDown: 83 KeyPress: 115 Input!
 Keyup: 83 KeyDown: 70 KeyPress: 102 Input!

而如果貼上文字或輸入中文,則只有input事件。原來,用keydown,keypress,keyup已經不是輸入事件的全集了,input代表了輸入事件。

於是,對於字數的統計,js指令碼可以這樣寫:

<html>
<head>
<style type="text/css">
.counter
{
	font-size:18px;
	color:#D40D12;
	float:right;
}
</style>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
function recount(){
   var maxlen=140;
   var current = maxlen-$('#content').val().length;
   $('.counter').html(current);

   if(current<0 || current>=maxlen){
       $('.counter').css('color','#D40D12');
       $('input#submit').attr('disabled','disabled');
   }
   else
      $('input#submit').removeAttr('disabled');
   if(current<10)
      $('.counter').css('color','#D40D12');
   else if(current<20)
      $('.counter').css('color','#5C0002');
   else if(current>(maxlen-2))
   	 $('.counter').css('color','#D40D12');
   else
      $('.counter').css('color','#cccccc');
}

$(document).ready(function(){
  $('#content').bind("blur focus input", function(){
       recount();
   });
})
</script>
</head><body>
<form action="#" method="get">
<span class="counter">140</span>
<textarea style="border: 1px solid red; height: 100px; width:100%;" id="content"></textarea>
<input disabled="disabled" type="submit" name="submit" value="submit" id="submit"></input>
</form>

</body>
</html>

以上指令碼可以在chrome,firefox,ie,safari 瀏覽器中測試通過,並在htc手機android 2.3和iphone 中測試中英文輸入通過。

如非註明轉載, 均為原創. 本站遵循知識共享CC協議,轉載請註明來源