導航:首頁 > 編程語言 > js監控鍵盤輸入

js監控鍵盤輸入

發布時間:2025-05-20 10:09:11

① 如何禁止js表單輸入主鍵盤0-9上面的符號。

總結起來,用戶有4種方法可以輸入被禁止的符號:


1、鍵盤Shit+[1-0]

2、鍵盤Ctrl+V

3、滑鼠右鍵-粘貼

4、第三方工具,例如Firebug直接修改DOM


所以要為每一個可能性寫相應的代碼。下面代碼中假設文本框ID為my_text。


window.onload = function() {

// 獲取元素
var ele = document.getElementById("my_text");

// 此函數將 1-0 數字上面的符號全部替換掉
function checkInput(ele) {
var regex = /[!@#$%^&*()_+]+/g;
if(ele.value.length && regex.test(ele.value)) {
ele.value = ele.value.replace(regex, '');
}
}

// 當 shift 和 1-0 被按下時,return false
ele.onkeydown = function(e) {
e = e || window.event;
var k = (typeof e.which == "number") ? e.which : e.keyCode;
if(e.shiftKey && k >= 48 && k <= 57) {
return false;
}
};

// 當 ctrl + v 被按下時,調用 checkInput 函數
ele.onkeyup = function(e) {
e = e || window.event;
var k = (typeof e.which == "number") ? e.which : e.keyCode;
if(e.ctrlKey && k == 86) {
checkInput(ele);
}
};

// 當用戶使用右鍵進行粘貼後 或 當內容發生改變時
// 相當於 onblur,調用 checkInput 函數
ele.onchange = function() {
checkInput(ele);
};
};

② 怎麼限制文本域textarea的輸入字元長度

與單行文本框text控制項不同,它不能通過maxlength屬性來限制字數,為此必須尋求其他方法來加以限制以達到預設的需求。通常的做法就是使用javaScript腳本語言來實現對textarea文本域的字數輸入限制,簡單而實用。假設我們有一個id為 txta1 的textarea文本區,我們可以通過以下代碼限制它的鍵盤輸入字數為10個字(漢字或其他小角字元):<script language="javascript" type="text/ecmascript"> window.onload = function() { document.getElementById('txta1').onkeydown = function() { if(this.value.length >= 10) event.returnValue = false; } } </script> 它的原理是通過對keydown(鍵盤鍵位按下)事件對指定id號的文本區進行監測,可以想像,它只能限制鍵盤輸入,如果用戶通過滑鼠右鍵粘貼剪切板中的文本,它無法控制字數。試看以下效果,請嘗試用鍵盤輸入:通過鍵盤輸入,以上文本區只能輸入10個字。但是,我們的目的並沒有達到!請隨便復制一些文本,試著用滑鼠右鍵粘貼,看看發生了什麼。你可以在網上找到類似上述的其他JS腳本,它們不管多麼優秀,其原理都是一樣的,通過對keydown、keyup或keypress之類的鍵盤鍵位操作事件來監控文本區的輸入,無法防止滑鼠右鍵的粘貼,為此,如果一定要真正地限制textarea的字數,我們還得為網頁加另一把鎖——禁用滑鼠右鍵,這無疑得付出額外的開銷,同時也可能是網頁製作者不一定願意做的。其實,還有一個更簡單的方法,使用onpropertychange屬性。onpropertychange可以用來判斷預定元素的value值,當元素的value值發生變化時判斷事件就會被觸發,僅關心被監測元素的value值,避開了輸入的來源,從而可以比較理想地達成我們的限制字數這一目的。它屬於JS范疇,可以在表單方框區代表中嵌套使用,以下是代碼和效果樣式,可以像上面那樣測試輸入,你會發現它真正達到目的:不管用什麼方式輸入,它只能輸入100個字(漢字或其他小解符號):代碼:

③ js監聽鍵盤上的加減號用以取代上下鍵來控制滾動條的滾動。

你給的代碼中 height:400 是錯誤的,需要加 px 單位。為了方便測試,我把高度改為了 100px。根據你的實際情況更改 scroll_height 的值,這里設為 10px。

<script type="text/javascript">
window.onload = function() {
// 指定每次按鍵後滾動長度,單位 px
var scroll_height = 10;
var gundong = document.getElementById("gundong");

document.onkeypress = function(e) {
e = e || window.event;
var keyStr = String.fromCharCode(e.which || e.keyCode);

// +,向上滾動
if(keyStr == "=") {
gundong.scrollTop = gundong.scrollTop - scroll_height;
}
// -,向下滾動
else if(keyStr == "-") {
gundong.scrollTop = gundong.scrollTop + scroll_height;
}
};
};
</script>

<div id="gundong" style="width:100%; height:100px; overflow:auto; border: 1px solid #f00;"/>
<table border="1">
<tr><td>cell</td></tr>
<tr><td>cell</td></tr>
<tr><td>cell</td></tr>
<tr><td>cell</td></tr>
<tr><td>cell</td></tr>
<tr><td>cell</td></tr>
</table>
</div>

④ js怎麼監聽移動端鍵盤展開事件

目的 : 監聽移動端鍵盤展開事件

工具 : 移動端, js

思路 : 可以通過監聽窗口大小的改變來實現,當端鍵盤展開時,窗口的大小發生改變,依據此基礎進行判斷.

js 移動端關於頁面布局,如果底部有position:fixed的盒子,又有input,當軟鍵盤彈出收起都會影響頁面布局。這時候Android可以監聽resize事件,代碼如下,而iOS沒有相關事件。

方法一實現代碼:

//獲取當前頁面高度
varwinHeight=$(window).height();
$(window).resize(function(){
varthisHeight=$(this).height();
if(winHeight-thisHeight>50){
//窗口發生改變(大),故此時鍵盤彈出
//當軟鍵盤彈出,在這裡面操作
}else{
//窗口發生改變(小),故此時鍵盤收起
//當軟鍵盤收起,在此處操作
}
});

方法二:監控鍵盤

監控的方式其實篩選下來也不過兩種:

① 時鍾setInterval不停監控

系統級別的監控,比如鍵盤出現時候通知window一個事件,但是很遺憾現在還沒有這個事件,但是這個事件等於

input類元素獲取焦點 == 彈出虛擬鍵盤

input類元素失去焦點 == 收起虛擬鍵盤

但是我們前面已經說過,上面的原則不一定可靠,所以該種方案也未必可靠了

基於系統監控這點,我們還可以監控resize事件或者scroll事件,但是經過我的測試,setInterval表現比較好.於是,我們簡單寫一段代碼,可靠是否滿足需求:

window.alert=function(msg){
$('body').append('<div>'+msg+'</div>')
};
functionfixedWatch(el){
if(document.activeElement.nodeName=='INPUT'){
el.css('position','static');
}else{
el.css('position','fixed');
}
}

setInterval(function(){
fixedWatch($('#headerviewheader'));
},500);

如上:移動端鍵盤展開事件即可被監聽.

⑤ js監控鍵盤的上下左右,多按一個鍵,另一個鍵就會失效,怎麼解決

所有的游戲方向鍵控制思路都是這樣的:
設置變數moveX,moveY,初始值是0
監控鍵盤,當左鍵按下時moveX--,當左鍵松開時moveX++,右鍵按下時moveX++,右鍵松開時moveX--。上下鍵同理。
然後每一次游戲邏輯循環(間隔觸發的事件,js可以用setInterval),根據moveX、moveY來改變被控制人物的位置。
這樣就可以實現人物的平滑移動同時也能解決你所說兩個按鍵同時按下的問題。

閱讀全文

與js監控鍵盤輸入相關的資料

熱點內容
emsetpasswordchar值 瀏覽:475
交叉口可以給你提供什麼數據 瀏覽:387
蘋果手機上的電池醫生有安卓版 瀏覽:457
碩士論文統計成績要哪些數據 瀏覽:866
網路盒上的光纖變紅怎麼修 瀏覽:290
為什麼u盤不能新建文件這些了 瀏覽:675
如何用函數將數據和摘要引用 瀏覽:439
vba復制文件夾 瀏覽:815
使我走出網路英文怎麼說 瀏覽:18
手機怎麼列印word文件 瀏覽:255
如何繞過安卓鎖屏密碼 瀏覽:200
文件夾1韓國電影 瀏覽:539
iphone6升級ios9白屏 瀏覽:199
看相處多久是什麼app 瀏覽:714
如何升級為https 瀏覽:735
列印機沒網路連接 瀏覽:654
文件編輯好了怎麼保存 瀏覽:415
幼兒編程有哪些app 瀏覽:965
ps製作一個很大的文件 瀏覽:446
win7隱藏無線密碼 瀏覽:874

友情鏈接