互換性IEとFirFoxlブラウザ---数字-カーソルのみ入力できます.
5024 ワード
<script type="text/javascript">
var leng;
var rex=/\d{1,}\.{0,1}\d{0,}/;
//
function ltrim(s)
{
return s.replace(/(^\s*)/g, '');
}
//
function rtrim(s)
{
return s.replace(/(\s*$)/g, '');
}
//
function trim(s){
return rtrim(ltrim(s));
}
function checkInputInt(obj){
//
var start=obj.selectionStart;
var end=obj.selectionEnd;
var report=document.getElementById(obj.id).value;
var reportItem=trim(report);
//
var res=report.substring(start-1,start);
if(typeof document.selection != "undefined")
{
// IE
var s=document.selection.createRange();
s.setEndPoint("StartToStart",obj.createTextRange())
len=trim(s.text).length;
}else{
// FirFox
obj.focus();
obj.setSelectionRange(start,end);
}
//
var temp=report.substring(0,1);
if(reportItem=='' || reportItem==null){
document.getElementById(obj.id).value=report.substring(report.length);
}else{
var count=report.substring(0,report.length-reportItem.length);
var countLength=count.length;
var countStr="";
//
for(var i=0;i<countLength;i++){
countStr+=" ";
}
//
var j=0;
for(var i=0;i<report.length;i++){
var a=report.charAt(i);
if(!a.match(rex)){
j++;
}
}
//
if(!temp.match(rex)){
//
document.getElementById(obj.id).value=report.substring(j,report.length);
//
if(typeof document.selection != "undefined")
{
var range=obj.createTextRange();
range.moveStart('character',0);
range.collapse(true);
range.select();
}else{
obj.focus();
obj.setSelectionRange(0,0);
}
}
}
clearInnerNumInt(obj,temp,res,start,end);
// 0 1
if(parseInt(report)<1){
document.getElementById(obj.id).value=1;
}
}
function clearInnerNumInt(obj,temp,res,start,end){
var reqStr=document.getElementById(obj.id).value;
var size=reqStr.length;
var noStr="";
var k=0;
var s=0;
for(var i=0;i<size;i++){
noStr=reqStr.charAt(i);
if(!noStr.match(rex)){
//
k++;
IgnoreStrInt(obj.id,reqStr);
}
if(noStr==" "){
//
s++;
}
}
if(typeof document.selection != "undefined")
{
// IE
var range = obj.createTextRange();
//
if(temp.match(rex)){
//alert("dd");
if(len>0&&len<size){
range.moveStart('character',len-k);
}else{
range.moveStart('character',len);
}
}else{
range.moveStart('character',0);
}
//
if(s>0){
range.moveStart('character',len);
}
range.collapse(true);
range.select();
}else{
// FirFox
if(!temp.match(rex)){
obj.setSelectionRange(0,0);
}else{
var resStr=document.getElementById(obj.id).value;
var resSize=resStr.length;
if(!res.match(rex)&&k>0){
obj.setSelectionRange(start-k,end-k);
}
}
}
}
//
function IgnoreStrInt(id,Str){
var ResultStr="";
var array=new Array();
for(var n=0;n<Str.length;n++){
var b=Str.charAt(n);
if(!b.match(rex)){
array[n]="";
}else{
array[n]=b;
}
}
for(var r=0;r<array.length;r++){
ResultStr+=array[r];
}
document.getElementById(id).value=ResultStr;
}
</script>
:<input type="text" id="name" value="" onkeyup="checkInputInt(this);"><p>