JavaScript实现的通过输入框中的数据长度来控制光标焦点的位置:
在IE中可以使用 onPropertyChange 属性来控制非常简单例子:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<SCRIPT LANGUAGE="JavaScript">
<!--
function lostFocus(obj,length){
var o=document.all;
var objLength=obj.value.length;//全角2个字符
for(var i=0;i<o.length;i++){
if(o[i]==obj&&parseInt(objLength)==length){
if((i+1)==o.length){
alert("已经输入完毕!");
return;
}
else o[i+1].focus();
}
}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<INPUT TYPE="text" NAME="ipt" onPropertyChange="lostFocus(this,5)">
<INPUT TYPE="text" NAME="ipt2" onPropertyChange="lostFocus(this,5)">
</BODY>
</HTML>
以上代码在IE内核的浏览器中运行良好,但是用火狐就是不行,好像是火狐中根本就不支持onPropertyChange属性,要用oninput并添加addeventlistener,在网上找了一下看到了一下的代码,是通过setInterval去定时检查输入框中的数据长度,当为指定的值的时候就改变光标位置:
<html>
<script>
var insObj=new Array();
var timer=null;
function $(id){return document.getElementById(id)};
/*
function changeInspector(id){
insObj[id]=""+$(id).value;
timer=setInterval("inspector('"+id+"')",100);
}
function inspector(sid){
if($(sid).value!=insObj[sid]){
alert("property changed");
insObj[sid]=$(sid).value;
}
}
*/
function changeInspector(id){
//insObj[id]=""+$(id).value.length;
timer=setInterval("inspector('"+id+"')",100);
}
function inspector(sid){
if($(sid).value.length==3){
$('mm2').focus();
//insObj[sid]=$(sid).value;
}
}
function doinspector(){
changeInspector("mm");
changeInspector("mm2");
}
</script>
<body onload="doinspector()">
<input type="text" id="mm" value=""></input>
<input type="text" id="mm2" value=""></input>
<input type="button" onclick="document.getElementById('mm').value='aa'" value="改变值"></input>
</body></html>
这样是可以实现要求的,但是问题出来了,就是你输入长度为3的数据的时候光标到达下一个框,这时候你要想修改刚才的内容换句话说要把光标重新放回去就不可能了,因为每100毫秒就检查一次只要是3就改变光标位置嘛,所以这样使用起来会很不方便,不过这种想法还是可以的。
以下是兼容的代码(火狐中使用oninput):
<div id="msg"></div>
<input type="text" id='txt' value="" />
<script>
//当状态改变的时候执行的函数
function handle()
{
//alert('asdf');
document.getElementById('msg').innerHTML='输入的文字长度为:'+document.getElementById('txt').value.length;
}
//firefox下检测状态改变只能用oninput,且需要用addEventListener来注册事件。
if(/msie/i.test(navigator.userAgent)) //ie浏览器
{
document.getElementById('txt').onpropertychange=handle
}
else
{//非ie浏览器,比如Firefox
document.getElementById('txt').addEventListener("input",handle,false);
}
</script>
以上代码就可以实现兼容了(PS:火狐的代码检查还真是严格,刚开始没写 input 的type在IE可以在火狐就是不可以后来加上就可以了)
不过在调试的时候还是浪费了不少的时间,因为在IE里加载页面后就显示:输入的内容是0。但是在火狐里死活是不显示的只有输入了内容之后才显示,一开始我以为又有不兼容问题所以就调了半天最后没有办法了我就试试输入了数据结果可以,狂晕!!现在想想是因为刚开始加载页面的时候是没有事件产生的所以 火狐一向“严谨”的作风就不会调用handle了,但是IE不叫宽松就加载了handle函数,当然也许是因为两家浏览器对addEventListener事件的理解不同。
在这里要说一下的是在<input>中可以使用onPropertyChange 在同时也可以使用 oninput这个现象很好,这样就可以傻瓜式的实现浏览器的“兼容了”(直接写两个事件就好)。写一个的话就只有用onload了,但是我还不知道怎么实现。。。
相关推荐
在JavaScript中,将光标聚焦在文本最后是一个常见的需求,特别是在输入框中用户需要立即开始输入时。在给定的代码示例中,一个简单的函数`cursorEnd()`被定义来实现这个功能。以下是对这段代码的详细解释: 首先,...
整个过程中,我们并没有使用复杂的JavaScript概念,而是通过简单的if条件判断和`.focus()`方法来实现输入框间的切换。 最后,通过这样的方法,我们可以在PC端实现一个简单的四格密码输入框功能,既满足了用户体验的...
在本文中,我们将探讨如何使用JavaScript实现一个动态提示输入框输入字数的功能。这个功能在一些社交平台的文本编辑器中很常见,比如用户在输入内容时,界面上会实时显示已输入的字数以及还能输入多少字。这种动态...
总的来说,通过合理地操纵文本输入框的`selectionStart`和`selectionEnd`属性,我们可以精确控制光标的放置位置,从而在用户聚焦输入框时使光标位于字符串的末尾。这种技术在构建富文本编辑器、表单验证或其他需要...
其中一种常见的做法就是在用户将光标聚焦到某个输入框时,通过弹出提示的方式告知用户该输入框的一些注意事项或格式要求。这种功能可以通过多种方式实现,而本示例则是利用了JavaScript来完成这一任务。 #### 二、...
"js文本框校验控件"是JavaScript技术在表单验证中的应用,主要用于确保用户在输入框中输入的数据符合预设的规则,提高用户体验并减少服务器端的无效处理。以下是对这一主题的详细说明: 1. **文本框验证的基本原理*...
JavaScript(JS)表单认证是网页开发中的一个关键环节,主要用于验证用户在表单中输入的数据是否符合预设的规则,从而提高用户体验并确保数据的安全性。在给定的代码中,我们可以看到一个简单的JS表单认证实现,用于...
为了确保表单中的数据符合特定要求,可以使用正则表达式来限制用户只能输入汉字。 **示例代码:** ```javascript (/[^\u4E00-\u9FA5]/g,'')"> ``` **解析:** - **正则表达式**:`[^\u4E00-\u9FA5]` 表示匹配非汉字...
如果文本域中的内容长度超过50个字符,则弹出警告框并阻止表单提交,同时光标聚焦到文本域。 ##### 2. 只允许输入中文 使用正则表达式来过滤掉所有非中文字符。 ```html (/[^\u4E00-\u9FA5]/g,'')"> ``` **解释**...
* Autofocus: 自动聚焦,用于设置输入框的自动聚焦效果。 * Disabled: 禁用,用于禁用输入框的编辑功能。 * Checked: 选中,用于设置单选框或复选框的默认选择状态。 * Selected: 默认选择项,用于设置下拉选择框的...
本篇文章将通过一个简单的jQuery表单验证示例,介绍如何使用jQuery实现友好的表单验证功能。 首先,我们来看一下jQuery的表单验证基本概念。表单验证主要是检查用户在表单中填写的信息是否符合预设的规则,例如长度...