<input type="text" name="show" value="2014-06-07" onkeydown='changeValue(this)'> <script> function GetCursorPos(oTextArea) { oTextArea.maxLength=11; var s="~"; clipboardData.setData('text',s); oTextArea.focus(); document.execCommand('paste'); var ret=oTextArea.value.indexOf(s); document.execCommand('undo'); if(ret==-1) GetCursorPos(oTextArea) oTextArea.maxLength=10; return ret; } function changeValue(o) { var e = event.keyCode; var chr = String.fromCharCode(e); var v = o.value.substr(0,10); var position = GetCursorPos(o); var s = []; var c=""; for(i=0; i<10; i++){ s[i] = v.substr(i,1); if ((i)==position){ s[i] = chr; } c=c+s[i]; } o.value = c; } </script> 有个bug,就是不能使用小键盘
只要String.fromCharCode改好了就OK~
<input value="2004-02-15" onkeyup="replace()"> <script> function replace(){ with(event.srcElement){ var rng=document.selection.createRange() select() rng.setEndPoint("StartToStart",document.selection.createRange()) var pos=rng.text.length rng.collapse() rng.select() value=/\d/.test(value.charAt(pos-1))?value.slice(0,pos)+value.slice(pos+1):value.slice(0,pos-1)+value.slice(pos) } } </script>
Xmercy(我佛山人): 还是一样啊!不是替换,而是删除光标所在处字符而在字符串最后添加字符。
<input value="2004-02-15" onkeyup="replace()"> <script> function replace(){ with(event.srcElement){ var rng=document.selection.createRange() select() rng.setEndPoint("StartToStart",document.selection.createRange()) var pos=rng.text.length var chr=value.charAt(pos-1) rng.collapse() rng.select() value=value.replace(new RegExp("^(.{"+(pos-1)+"})("+chr+")(.)(.*)$"),/\d/.test(chr)?"$1$4$2":"$1$3$4") } } </script> 自己再判断一下是否在最后输入的字符,对最后一个字符的删或留要简单的多,自己完成
<script>
function GetCursorPos(oTextArea)
{
oTextArea.maxLength=11;
var s="~";
clipboardData.setData('text',s);
oTextArea.focus();
document.execCommand('paste');
var ret=oTextArea.value.indexOf(s);
document.execCommand('undo');
if(ret==-1) GetCursorPos(oTextArea)
oTextArea.maxLength=10;
return ret;
}
function changeValue(o)
{
var e = event.keyCode;
var chr = String.fromCharCode(e);
var v = o.value.substr(0,10);
var position = GetCursorPos(o);
var s = [];
var c="";
for(i=0; i<10; i++){
s[i] = v.substr(i,1);
if ((i)==position){
s[i] = chr;
}
c=c+s[i];
}
o.value = c;
}
</script>
有个bug,就是不能使用小键盘
<script>
function replace(){
with(event.srcElement){
var rng=document.selection.createRange()
select()
rng.setEndPoint("StartToStart",document.selection.createRange())
var pos=rng.text.length
rng.collapse()
rng.select()
value=/\d/.test(value.charAt(pos-1))?value.slice(0,pos)+value.slice(pos+1):value.slice(0,pos-1)+value.slice(pos)
}
}
</script>
还是一样啊!不是替换,而是删除光标所在处字符而在字符串最后添加字符。
<script>
function replace(){
with(event.srcElement){
var rng=document.selection.createRange()
select()
rng.setEndPoint("StartToStart",document.selection.createRange())
var pos=rng.text.length
var chr=value.charAt(pos-1)
rng.collapse()
rng.select()
value=value.replace(new RegExp("^(.{"+(pos-1)+"})("+chr+")(.)(.*)$"),/\d/.test(chr)?"$1$4$2":"$1$3$4")
}
}
</script>
自己再判断一下是否在最后输入的字符,对最后一个字符的删或留要简单的多,自己完成