android 手機輸入對中文輸入事件的響應
阿新 • • 發佈:2018-12-23
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協議,轉載請註明來源