js怎么替换字符串光标后面的字符 例如文本框中的内容为2009/08/31 光标在2前面的时候输入20100901就把2009/08/31替换为2010/09/01,"/"不替换 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title><script type="text/javascript">function f1(){if (event.keyCode==13) {var d=document.getElementById("date1").value;document.getElementById("date1").value=d.substring(0,4)+"/"+d.substring(4,6)+"/"+d.substring(6,8);}}</script></head><body><input type="text" name="textfield" id="date1" onkeydown="f1()" /></body></html>参照这个看看有没有帮助 怎么判断光标在2之前呢?一般是光标离开的时候去替换,<input type="text" onblur="this.value=this.value.replace(/^(\d{4}\/?)(\d{2}\/?)(\d{2})$/, '$1/$2/$3')"> 如果要获取,操作光标的位置,需要认识一个东西,textRange.我有一片文章你可以看看。http://blog.csdn.net/sunxing007/archive/2009/04/17/4086952.aspx针对你的问题,我写了个比较简单的例子,把光标前的字符串大写,给你参考。<input type="text" id="a" /><input type="button" id="b" value="change" /><script> document.getElementById('b').onclick = function(){ var obj = document.getElementById('a'); var text = obj.value; obj.focus(); var s=document.selection.createRange(); s.setEndPoint("StartToStart",obj.createTextRange()); //光标前的字符串长度 var lengthBefore = s.text.length; //光标前的字符串 var textBefore = text.substring(0,lengthBefore); //大写 var upperCase = textBefore.toUpperCase(); obj.value = upperCase + text.substring(5); this.focus(); };</script> 上面的例子有一个地方写错了。<input type="text" id="a" /><input type="button" id="b" value="change" /><script> document.getElementById('b').onclick = function(){ var obj = document.getElementById('a'); var text = obj.value; obj.focus(); var s=document.selection.createRange(); s.setEndPoint("StartToStart",obj.createTextRange()); //光标前的字符串长度 var lengthBefore = s.text.length; //光标前的字符串 var textBefore = text.substring(0,lengthBefore); //大写 var upperCase = textBefore.toUpperCase(); obj.value = upperCase + text.substring(lengthBefore); this.focus(); };</script> 谢谢各位的回答sunxing007的回答启发了我 最后找到了终极解决方案贴出来大家分享下脚本<script language="javascript"> function keydown(src) { var e = window.event; var code = e.keyCode; var cursorPos = getPos(src); if(code==8) { //退格 if(cursorPos == 5 || cursorPos == 8|| cursorPos == 11 || cursorPos == 14 || cursorPos == 17) { movenext(src,cursorPos,-1); cursorPos-=1; } else movenext(src,cursorPos,0); var range = setSelect(src,cursorPos-1); range.text = "0"; movenext(src,cursorPos,-1); e.returnValue = false; return false; } else if(code == 46) e.returnValue = false; } function keypress(src) { var e = window.event; var code = e.keyCode; var cursorPos = getPos(src); if(!keyPressInt()) return false; if(cursorPos == 4 || cursorPos == 7|| cursorPos == 10 || cursorPos == 13 || cursorPos == 16) { movenext(src,cursorPos,1); cursorPos += 1; } var num = String.fromCharCode(code); if(checkInput(src,num,cursorPos)) { var range = setSelect(src,cursorPos); range.text = num; if(cursorPos == 3 || cursorPos == 6 || cursorPos == 9 || cursorPos == 12 || cursorPos == 15) movenext(src,cursorPos,2); else { movenext(src,cursorPos,1); } } e.returnValue = false; return false; } function checkInput(src,num,pos) { var val = src.value; var year = parseInt(val.substring(0,4),10); var month = parseInt(val.substring(5,7),10); switch(pos) { case 0: if(num != 1 && num != 2) return false; break; case 5: var char6 = val.charAt(6); if(num > 1 || num == 1 && char6 > 2) return false; break; case 6: if(val.charAt(5) == "1" && num > 2 || val.charAt(5) == "0" && num == 0) return false; break; case 8: var char9 = val.charAt(9); switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(num > 3 || num == 3 && char9 > 1) return false; break; case 4: case 6: case 9: case 11: if(num > 3 || num == 3&&char9 > 0) return false; break; case 2: if(num > 2) return false; break; } break; case 9: var char8 = val.charAt(8); switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(char8 == 0 && num == 0 || char8 == 3 && num > 1) return false; break; case 4: case 6: case 9: case 11: if(char8 == 0 && num == 0 || char8 == 3 && num != 0) return false; break; case 2: if(char8 == 0 && num == 0) return false; else if(char8 == 2 && (year%4 != 0 || (year%100 == 0 && year%400 != 0)) && num > 8) return false; break; } break; case 11: if(num > 2 || num == 2 && val.charAt(12) > 3) return false; break; case 12: if(parseInt(val.charAt(11) + num)>23) return false; break; case 14: case 17: if(num > 5) return false; break; } return true; } function setSelect(src,pos) { var range = src.createTextRange(); range.moveStart("character",pos); range.moveEnd("character",pos - src.value.length + 1); range.select(); return range; } function getPos(obj) { var ml = obj.value.length; var pos = 0; var rng = document.selection.createRange(); rng.moveEnd("character",ml); try { pos = ml - rng.text.length } catch(e) { } return pos; } function movenext(src,pos,flag) { var range = src.createTextRange(); range.moveStart("character",pos + flag); range.collapse(true); range.select(); } function keyPressInt() { var e = window.event; code = e.keyCode; if(code < 48 || code > 57) { window.event.returnValue = false; return false; } return true; } function checkPaste() { window.event.returnValue=false; } </script>文本框<input name="txtOverTime:Text1" id="txtOverTime_Text1" maxlength="21" value="2009-09-01" onpaste="checkPaste()" onkeypress="keypress(this)" onkeydown="keydown(this)" onmousemove="checkPaste()" type="text" onDrag="checkPaste()" oncut="checkPaste()" /> 文本框 <input name="txtOverTime:Text1" id="txtOverTime_Text1" maxlength="19" value="2009-09-01 19:10:32" onpaste="checkPaste()" onkeypress="keypress(this)" onkeydown="keydown(this)" onmousemove="checkPaste()" type="text" onDrag="checkPaste()" oncut="checkPaste()" /> DWZ的创建表单元素问题 请问高手个js 删除修改表格内容的问题 为什么我的MySQL显示不了中文 JS控制层相关问题 怎样实现点击链接弹出文件下载框? 点击不同的按钮,显示不同的输入文本框程序如何编写?? 获取<div></div>之间的内容,然后赋给一个<input type="hidden" value="" />的value属性 javaScript实现给隐藏表单赋值提交 请问如何设置输入焦点? 请教一个滚动条有难度问题 js文件动态加载 ajax跨域问题
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
function f1(){
if (event.keyCode==13) {
var d=document.getElementById("date1").value;
document.getElementById("date1").value=d.substring(0,4)+"/"+d.substring(4,6)+"/"+d.substring(6,8);
}
}
</script>
</head><body>
<input type="text" name="textfield" id="date1" onkeydown="f1()" />
</body>
</html>
参照这个看看有没有帮助
<input type="text" onblur="this.value=this.value.replace(/^(\d{4}\/?)(\d{2}\/?)(\d{2})$/, '$1/$2/$3')">
http://blog.csdn.net/sunxing007/archive/2009/04/17/4086952.aspx
针对你的问题,我写了个比较简单的例子,把光标前的字符串大写,给你参考。<input type="text" id="a" />
<input type="button" id="b" value="change" />
<script>
document.getElementById('b').onclick = function(){
var obj = document.getElementById('a');
var text = obj.value;
obj.focus();
var s=document.selection.createRange();
s.setEndPoint("StartToStart",obj.createTextRange());
//光标前的字符串长度
var lengthBefore = s.text.length;
//光标前的字符串
var textBefore = text.substring(0,lengthBefore);
//大写
var upperCase = textBefore.toUpperCase();
obj.value = upperCase + text.substring(5);
this.focus();
};
</script>
<input type="button" id="b" value="change" />
<script>
document.getElementById('b').onclick = function(){
var obj = document.getElementById('a');
var text = obj.value;
obj.focus();
var s=document.selection.createRange();
s.setEndPoint("StartToStart",obj.createTextRange());
//光标前的字符串长度
var lengthBefore = s.text.length;
//光标前的字符串
var textBefore = text.substring(0,lengthBefore);
//大写
var upperCase = textBefore.toUpperCase();
obj.value = upperCase + text.substring(lengthBefore);
this.focus();
};
</script>
脚本
<script language="javascript"> function keydown(src)
{
var e = window.event;
var code = e.keyCode;
var cursorPos = getPos(src);
if(code==8)
{ //退格
if(cursorPos == 5 || cursorPos == 8|| cursorPos == 11 || cursorPos == 14 || cursorPos == 17)
{
movenext(src,cursorPos,-1);
cursorPos-=1;
}
else
movenext(src,cursorPos,0);
var range = setSelect(src,cursorPos-1);
range.text = "0";
movenext(src,cursorPos,-1);
e.returnValue = false;
return false;
}
else if(code == 46)
e.returnValue = false;
} function keypress(src)
{
var e = window.event;
var code = e.keyCode;
var cursorPos = getPos(src);
if(!keyPressInt())
return false;
if(cursorPos == 4 || cursorPos == 7|| cursorPos == 10 || cursorPos == 13 || cursorPos == 16)
{
movenext(src,cursorPos,1);
cursorPos += 1;
}
var num = String.fromCharCode(code);
if(checkInput(src,num,cursorPos))
{
var range = setSelect(src,cursorPos);
range.text = num;
if(cursorPos == 3 || cursorPos == 6 || cursorPos == 9 || cursorPos == 12 || cursorPos == 15)
movenext(src,cursorPos,2);
else
{
movenext(src,cursorPos,1);
}
}
e.returnValue = false;
return false;
} function checkInput(src,num,pos)
{
var val = src.value;
var year = parseInt(val.substring(0,4),10);
var month = parseInt(val.substring(5,7),10);
switch(pos)
{
case 0:
if(num != 1 && num != 2)
return false;
break;
case 5:
var char6 = val.charAt(6);
if(num > 1 || num == 1 && char6 > 2)
return false;
break;
case 6:
if(val.charAt(5) == "1" && num > 2 || val.charAt(5) == "0" && num == 0)
return false;
break;
case 8:
var char9 = val.charAt(9);
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(num > 3 || num == 3 && char9 > 1)
return false;
break;
case 4:
case 6:
case 9:
case 11:
if(num > 3 || num == 3&&char9 > 0)
return false;
break;
case 2:
if(num > 2)
return false;
break;
}
break;
case 9:
var char8 = val.charAt(8);
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(char8 == 0 && num == 0 || char8 == 3 && num > 1)
return false;
break;
case 4:
case 6:
case 9:
case 11:
if(char8 == 0 && num == 0 || char8 == 3 && num != 0)
return false;
break;
case 2:
if(char8 == 0 && num == 0)
return false;
else if(char8 == 2 && (year%4 != 0 || (year%100 == 0 && year%400 != 0)) && num > 8)
return false;
break;
}
break;
case 11:
if(num > 2 || num == 2 && val.charAt(12) > 3)
return false;
break;
case 12:
if(parseInt(val.charAt(11) + num)>23)
return false;
break;
case 14:
case 17:
if(num > 5)
return false;
break;
}
return true;
} function setSelect(src,pos)
{
var range = src.createTextRange();
range.moveStart("character",pos);
range.moveEnd("character",pos - src.value.length + 1);
range.select();
return range;
} function getPos(obj)
{
var ml = obj.value.length;
var pos = 0;
var rng = document.selection.createRange();
rng.moveEnd("character",ml);
try
{
pos = ml - rng.text.length
}
catch(e)
{
}
return pos;
} function movenext(src,pos,flag)
{
var range = src.createTextRange();
range.moveStart("character",pos + flag);
range.collapse(true);
range.select();
} function keyPressInt()
{
var e = window.event;
code = e.keyCode;
if(code < 48 || code > 57)
{
window.event.returnValue = false;
return false;
}
return true;
} function checkPaste()
{
window.event.returnValue=false;
}
</script>文本框
<input name="txtOverTime:Text1" id="txtOverTime_Text1" maxlength="21" value="2009-09-01" onpaste="checkPaste()" onkeypress="keypress(this)" onkeydown="keydown(this)" onmousemove="checkPaste()" type="text" onDrag="checkPaste()" oncut="checkPaste()" />
<input name="txtOverTime:Text1" id="txtOverTime_Text1" maxlength="19" value="2009-09-01 19:10:32" onpaste="checkPaste()" onkeypress="keypress(this)" onkeydown="keydown(this)" onmousemove="checkPaste()" type="text" onDrag="checkPaste()" oncut="checkPaste()" />