检测input每次的输入是否合法遇到汉字输入就有问题

记录一下资料,就这几天测试一下 然后发布成果


代码如下:

<input type="text" value="xxx" id="xx" onclick="this.myprop='xx'">
<script type="text/javascript">
<!--
document.getElementById('xx').attachEvent('onpropertychange',function(o){alert('ok')});
//-->
</script>

执行上面的代码,单击输入框发现也会触发onpropertychange,输入一个值同样也会触发这个事件,这就证明了,只要有属性的值被修改就会触发该事件。

第二、既然我们发现了这个特点,那就会有一个问题了:当我们有时在输入框值发生改变时希望执行一个函数操作,但同时也要修改一个自定义的属性,这样onpropertychange就会被触发两次,这个可能并不是我们所希望的。
猜想一下,既然提供了这么一个属性,那一定应该能获取到是哪个属性被改变了。试着获取参数个数及参数内容。

代码如下:

<input type="text" value="xxx" id="xx" onclick="this.myprop='xx'">
<script type="text/javascript">
<!--
document.getElementById('xx').attachEvent('onpropertychange',function(){
alert(arguments.length);
for(var i=0;i<arguments.length;i++){
alert(arguments[i]);
}
});
//-->
</script>

执行上面一段代码,会发现弹出了1和[object],这说明该事件只给回调函数传入一个参数而且是object类型。
那我们就试试遍历一下这个object。

代码如下:

<input type="text" value="xxx" id="xx" onclick="this.myprop='xx'">
<script type="text/javascript">
<!--
document.getElementById('xx').attachEvent('onpropertychange',function(o){
for(var item in o){
alert(item+":"+o[item]);
}
});
//-->
</script>

执行一下,发现有很多个属性,但仔细看我们可能会发现这么一个属性:propertyname,相信每个人都能猜到这个属性的意思了。对,这个就是用来获取哪个属性被修改的。

代码如下:

<input type="text" value="xxx" id="xx" onclick="this.myprop='xx'">
<script type="text/javascript">
<!--
document.getElementById('xx').attachEvent('onpropertychange',function(o){
alert(o.propertyName);
});
//-->
</script>

分别单击文本框和输入一个值,会发现分别弹出了myprop和value。

再回到我们开始的问题,我们只需要判断是否是value被改变就ok了。
直接看代码吧:

代码如下:

<input type="text" value="xxx" id="xx" onclick="this.myprop='xx'">
<script type="text/javascript">
<!--
document.getElementById('xx').attachEvent('onpropertychange',function(o){
if(o.propertyName!='value')return; //不是value改变不执行下面的操作
//.......函数处理
});
//-->
</script>

三.让FF支持onPropertyChange类似的效果

之前做了个对input框的实时校验,比如只允许输入数字,用户输入的却是字母等,这时候就把用户输入的值变为红色等...或者对textarea文本域剩余可输入字符的提示,就遇到了一个问题,使用onPropertyChange在IE下很好很正常,但是在FF上就么效果鸟~~~

于是在网上就找到了一个可行性方法~~ Firefox有个oninput事件效果和onPropertyChange一样,所以同时加上oninput和onPropertyChange问题就解决鸟~~~ oo....

<input type="text" oninput="cgColor(this);" onPropertyChange="cgColor(this);" maxlength="4" name="pt_bankou" id="pt_bankou" value="" />

(0)

相关推荐

  • js限制input标签中只能输入中文

    方法很简单,这里就不多BB了,直接奉上示例 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>只能输入中文</title> </head> <body> <input type="text" id="text"

  • 使用正则限制input框只能输入数字/英文/中文等等

    常用HTML正则表达式 1.只能输入数字和英文的: 复制代码 代码如下: <input onkeyup="value=value.replace(/[/W]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))" ID="Text1" NAME="Text1">

  • input禁止键盘及中文输入,但可以点击

    网上找了很多,不实用,要不兼容问题,这个可以!<input>禁止键盘及中文输入,但又不能用readonly 而且还需兼容ie 和 ff , 为了完成这功能费了蛮大功夫,呵呵,在此记录以便日后之用:另外禁止粘贴 onpaste="return false" 复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">    <HTML>     &

  • 在RedHat9下安装Chinput中文输入法

    1.在Chinput网站下载需要的文件 http://www.opencjk.org/~yumj/project-chinput.html 2.为了顺利的完成安装,需要以下软件: 最新版本Chinput-3.0.2.src.rpm unicon的模块和码表部分 另外需要GNU pth 1.2以上版本(http://www.gnu.org/software/pth) 3.假设所有软件全部下载到/tmp中 4.安装输入法字典 cd /usr/lib tar zxvf /tmp/unicon2-im.

  • js 限制input只能输入数字、字母和汉字等等

    复制代码 代码如下: <input type="text"onKeyUp="this.value=this.value.replace(/[^\.\d]/g,'');if(this.value.split('.').length>2){this.value=this.value.split('.')[0]+'.'+this.value.split('.')[1]}"> 1.文本框只能输入数字代码(小数点也不能输入) 复制代码 代码如下: <i

  • 检测input每次的输入是否合法遇到汉字输入就有问题

    记录一下资料,就这几天测试一下 然后发布成果 复制代码 代码如下: <input type="text" value="xxx" id="xx" onclick="this.myprop='xx'"> <script type="text/javascript"> <!-- document.getElementById('xx').attachEvent('onpropert

  • Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)

    把js的验证方法改成angular可使用的方法 AngularJS文件的写法: $scope.clearNoNum = function(obj,attr){ //先把非数字的都替换掉,除了数字和. obj[attr] = obj[attr].replace(/[^\d.]/g,""); //必须保证第一个为数字而不是. obj[attr] = obj[attr].replace(/^\./g,""); //保证只有出现一个.而没有多个. obj[attr] = o

  • 解决html input验证只能输入数字,不能输入其他的问题

    此方法为借鉴别人的,在此只做记录.希望对大家也有用. <input type="text" onkeyup="if(!/^\d+$/.test(this.value)) tip.innerHTML='必须输入数字,且不能有空格.'; else tip.innerHTML='';" /><span id="tip"></span> 以上这篇解决html input验证只能输入数字,不能输入其他的问题就是小编分享给

  • jquery检测input checked 控件是否被选中的方法

    jquery检测input checked 控件是否被选中 js部分 复制代码 代码如下: function tongyianniu(){ var gouxuan=$('input[type=checkbox]').is(':checked'); alert(gouxuan); } html部分 复制代码 代码如下: <input type="button" id="btnRegister" onclick="tongyianniu();"

  • 将input框中输入内容显示在相应的div中【三种方法可选】

    例题一枚:在input框中输入内容,会相应的显示在下面的div中的不同做法: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="css/bootstrap.css" rel=

  • 详解elementUI中input框无法输入的问题

    最近发现别人项目中在输入密码的时候发现input框无法输入进去 键盘都快敲坏了还是无法输入 通过各种排查.还是无法解决这个问题 后面无意中发现 elementUI中@input事件可以拿到当前的输入的值 问题找到了 视图没有更新的问题 那么怎么解决了 刷新通过this.$forceUpdate() 可以解决这个问题 这样的话这个问题就解决了 原因可能是由于组件嵌套太深(不是很了解为啥出现这个问题有没有大神解释一波 ) 到此这篇关于详解elementUI中input框无法输入的问题的文章就介绍到这

  • 正则表达式解决input框固定输入值得格式(金额,特殊字符)

    在写输入用到input的时候,经常出现以下几种情况: 只能输入某.栗子:只能输入数字,只能输入字母(大写,小写)只能输入某固定格式.栗子:只能输入金额,只能输入小数且最多保留2位不能输入某.栗子:不能输入特殊字符,如"@#¥%&*"等 这种情况下,就需要直接在input上进行限制,在前端的应用中主要是用正则表达式来解决这些问题的 第一种情况:只能输入某 <template> <div id="app"> {{value}} <e

  • javascript使用正则控制input输入框允许输入的值方法大全

    1.只允许输入数字 <input name="username" type="text" onkeyup="value=this.value.replace(/\D+/g,'')"> 2.只允许输入英文字母.数字和下划线(以下二种方法实现) <input name="username" type="text" style="ime-mode:disabled">

  • JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金) 两位小数

    第一: 限制只能是整数 <input type = "text" name= "number" id = 'number' onkeyup= "if(! /^d+$/.test(this.value)){alert('只能整数');this.value='';}" /> 如果不是整数就直接alert 第二: 限制是两位的小数 <input type = "text" name= "price&quo

随机推荐