`

onpropertychange与输入法有关

 
阅读更多

页面输入框经常有只允许输入数字的限制,一般都用onpropertychange事件比较简单,之前写了这样的代码

   var obj=document.getElementById("input1");

   if(isNaN(obj.value))
   { 
     obj.value="";
   }

 在别人机器上运行没问题,但是一到我机器输入中文就会奔溃,最后发现他用的是google输入法,我是搜狗的(qq输入法也会崩溃),但是将onproperychange换成onblur方法又不会有问题,不知道具体原因,以下是另一种解决办法,引用自黑色头发:http://heisetoufa.iteye.com,留作参考

<input onpropertychange="if(isNaN(value)) value=value.substring(0,value.length-1);" style="ime-mode:disabled; " onpaste="return false" onkeypress="return event.keyCode!=32"> 
 

只能输入数字和1个小数点,不能输入数字和小数点外的其他任何字符包括空格

 

onpropertychange="if(isNaN(value)) value=value.substring(0,value.length-1);" //只能输入数字和小数点

style="ime-mode:disabled; " //屏蔽输入法,不允许输入汉字

onpaste="return false" //不允许粘贴

onkeypress="return event.keyCode!=32"  //不允许输入空格

 

注意:很容易犯以下的错误

function isNumber()
{
   var obj=document.getElementById("input1");
   var intvalue=parseFloat(obj.value);
   if(isNaN(intvalue))
   { 
     obj.value="";
   }
}

 这种方法实际是不对的,因为parseFloat()方法仅仅在字符串的第一个字符不能被转换为数字才会返回 NaN,如果是12sss,则返回12,所以不能通过先转化再判断NaN,倒是应该再转换之前判断是否NaN

 

 

分享到:
评论

相关推荐

    onchange,onpropertychange,oninput键盘输入和js赋值时区别

    在JavaScript中,`onchange`、`onpropertychange` 和 `oninput` 是与用户交互相关的事件,它们各自有特定的触发条件,特别是在处理表单元素的键盘输入和JavaScript动态赋值时。以下是对这三个事件的详细解释: 1. `...

    中文输入法不触发onkeyup事件的解决办法

    总结来说,处理中文输入法不触发`onkeyup`事件的问题,我们可以利用`oninput`和`onpropertychange`这两个事件,通过条件判断实现跨浏览器的兼容性。这种方法能够确保在用户使用中文输入法时也能正确地监控文本框的...

    input 输入框内的输入事件详细分析

    在ie下用onpropertychange事件,在其他浏览器里用input事件. 2.用例:对每个浏览器分别测试如下的情况: –输入英文字母时–开启输入法时–大小写不同时–输入运算符时–按下tab键时–输入法中按下空格时–按下控制键时...

    textarea不能通过maxlength属性来限制字数的解决方法

    与键盘事件监听不同,`onpropertychange`事件会在元素的属性发生变化时被触发,包括内容的更改。这意味着无论用户是通过键盘输入还是通过粘贴文本,只要文本区域的值发生变化,该事件就会被触发。这种方法可以更全面...

    JavaScript中的所有on事件

    最常用的事件之一,当用户单击页面上的某个元素时触发,可用于执行任何与用户交互相关的操作,如跳转链接或显示菜单。 #### 11. `oncontextmenu` 在用户右键点击元素时触发,可用于自定义上下文菜单或阻止默认菜单...

    JS高级应用(一).pdf

    `&lt;input style="ime-mode:disabled"&gt;`可以关闭输入法,而`&lt;noscript&gt;`标签内的内容则在用户禁用JavaScript时不会显示,通常用于防止页面内容被另存为。 获取上一页来源可以通过`document.referrer`,这可以用来追踪...

    基于jQuery的计算文本框字数的代码

    而对于IE浏览器,需要使用`onpropertychange`事件。这两个事件在发生条件上是文本框值发生改变时触发。 2. 字数计算:计算字数需要区分中文字和非中文字(包括英文字符、数字和符号)。在中文输入法下,一个汉字...

    表单(FORM)的一些实用效果代码

    &lt;input type="checkbox" name="checkA" onpropertychange="for(i=0; i; i++) { A.children[i].checked = this.checked }"&gt; a ``` 当主复选框被勾选时,所有子复选框也会被选中。这是通过遍历子元素并...

Global site tag (gtag.js) - Google Analytics