您的位置:首页 > 其它

文本输入框中光标的控制(定位)

2007-03-30 16:42 295 查看
前一阵子,项目中有个数字编辑的文本框,每次光标都跑到最后面。客户对此不满意,修改了一下代码。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Untitled</title>
</head>

<body>

<script language="javascript">
function setPos(id,num)
{
document.all[ id ].focus();
var e =document.getElementById(id);
var r =e.createTextRange();
r.moveStart('character',num);
r.collapse(true);
r.select();
}
function removeComma( src ){
var orgStr = new String( src ) ;
return orgStr.replace(/[,]/g,"");
}
function removeMinus( src ){
var orgStr = new String( src ) ;
return orgStr.replace(/[-]/g,"");
}
function mod(a,b){
var r
r=Math.round(a/b)
if((b*r)>a)
r-=1
return (a-(b*r))
}
function appendDoubleComma( num ){
// alert("Enter---------");
var srcNumber = new String( num ) ;
if( num == null || srcNumber.length == 0 ){
return num ;
}
if (srcNumber.substring(0, 1) == '-'){
srcNumber = '-' + removeMinus(srcNumber);
var nNum = srcNumber.substring(1);
return '-' + appendDoubleComma(nNum)
}
else
srcNumber = removeMinus(srcNumber);
// alert("Enter---------1111");
if (srcNumber == '-')
return srcNumber;
// if( num == 0 && srcNumber.length>=1 && num.indexOf('.') == -1){
// return '0' ;
// }
if (srcNumber.substring(0, 1) == '-'){
var nNum = srcNumber.substring(1);
if(nNum.substring(1, 2) == '0' && num.indexOf('.') == -1) {
return srcNumber.substring(2);
}
}
// else if(srcNumber.substring(0, 1) == '0' && num.indexOf('.') == -1) {
// return srcNumber.substring(1)
// }
// alert("Enter---------2222");
var isMinus = false ;
if( num < 0 ){
isMinus = true ;
}
var pointIndex=0;
var strValue= removeComma( srcNumber );
pointIndex=strValue.indexOf(".");
if(pointIndex==0)
return parseFloat(strValue);
if(!(pointIndex>0)){
pointIndex=strValue.length;
}
// alert("Enter---------3333");
if( ( isMinus && srcNumber < 3 ) || (!isMinus && srcNumber < 4 ) ){
return num ;
}
// alert("Enter---------3344");
var m = mod(pointIndex,3);
if (m==0)
m=3
else if (isMinus && m==1)
m=4;
var newValue="";
// alert("Enter---------4444");
if (pointIndex>3){
newValue=strValue.substring(0,m)+",";
len=0;
if (m==3)
len=Math.floor((pointIndex)/3)-2
else if (isMinus && m==4)
len=Math.floor((pointIndex)/3)-2
else
len=Math.floor((pointIndex)/3)-1
for (i=0;i<len;i++){
newValue =newValue+strValue.substring(m+i*3,m+(i+1)*3)+",";
}
newValue =newValue+strValue.substring(m+(i)*3);
}else{
newValue=strValue;
}
// alert("Enter---------5555");
return newValue;
}
function editDate(obj){
var pos = ShowCursorPos(obj);
var e =document.getElementById("text1");
var value1 = e.value;
// alert(value1);
value1 = removeComma(value1);
// alert(value1);
value1 = appendDoubleComma(value1);
// alert(value1);
e.value = value1;
setPos(pos);
}
function ShowCursorPos(el) {

if (el.createTextRange) {
var v = el.value;

var r = el.createTextRange();
var s=document.selection.createRange();
s.setEndPoint("StartToStart",el.createTextRange());
//var pos = s.text.length;
document.all.div1.innerHTML = s.text.length;
return v.length-s.text.length;
// return s.text.length;
}

}
function modifyDouble(obj,event,hiddenname,id,dotnum,maxlength){

var pos = ShowCursorPos(obj);
if((event.keyCode==37)||(event.keyCode==39))
return true;
if((event.keyCode>47&&event.keyCode<58) || (event.keyCode>95&&event.keyCode<106) || event.keyCode==8 || event.keyCode==46 || event.keyCode==189){
var dummyNumberObj = document.all[ id ] ;

// var realNumberObj = eval('document.middleform.hidden_' + hiddenname) ;

dummyNumberObj.value=removeComma( dummyNumberObj.value ) ;
//Added by LvYingna for 0015034 20070129 begin
if(maxlength==5){
if(dummyNumberObj.value.indexOf(".")==-1)//Added by LvYingna for 0015134 20070205
dummyNumberObj.value=dummyNumberObj.value.substring(0,4);
}
if(maxlength==8){
dummyNumberObj.value=dummyNumberObj.value.substring(0,6);
}
if(maxlength==10){
if(dummyNumberObj.value.indexOf(".")==-1)//Added by LvYingna for 0015134 20070205
dummyNumberObj.value=dummyNumberObj.value.substring(0,8);
}
if(maxlength==13){
dummyNumberObj.value=dummyNumberObj.value.substring(0,10);
}
//Added by LvYingna for 0015034 20070129 end
dummyNumberObj.value =appendDoubleComma( dummyNumberObj.value );
//Added by LvYingna for 0015134 20070205 begin
if(maxlength==5){
dummyNumberObj.value=dummyNumberObj.value.substring(0,5);
}
if(maxlength==10){
dummyNumberObj.value=dummyNumberObj.value.substring(0,10);
dummyNumberObj.value=removeComma( dummyNumberObj.value );
dummyNumberObj.value =appendDoubleComma( dummyNumberObj.value );
}
// //Added by LvYingna for 0015134 20070205 end
// realNumberObj.value = removeComma( dummyNumberObj.value ) ;
// setCaretToPoint(id,cus);
}
var srcValue = document.all[ id ].value
var decPosition = srcValue.indexOf('.');
if(decPosition!=-1)
{
if(dotnum==1){
document.all[ id ].value = srcValue.substring(0,decPosition+2)}
if(dotnum==2){
document.all[ id ].value = srcValue.substring(0,decPosition+3)}
if(dotnum==3){
document.all[ id ].value = srcValue.substring(0,decPosition+4)}
}
var length11 = dummyNumberObj.value.length - pos;
setPos(id,length11);
}

</script>

<input type="text" id="text1" value="1234567890" onkeyup="modifyDouble(this,event,this.name,this.id,2,20)">
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: