① 如何禁止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来改变被控制人物的位置。
这样就可以实现人物的平滑移动同时也能解决你所说两个按键同时按下的问题。