2009-10-09 4 views
0

jquery 플러그인없이 float/double 만 허용하기 위해 입력 필드를 마스크하는 가장 좋은 방법은 무엇입니까?double/float에 대한 jQuery 입력 유효성 검사

$("#defaultvalue").bind("keypress", function(e) { 
       if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) { 
        return false; 
       } 
      }); 

를하지만, 귀하의 의견은 숫자가 아닌 경우, 숫자 만 들으

+0

나는 또한 이미 값을 확인 할 수 있어야하기 때문에, 좋은 것 정규식을 사용하여 솔루션 (바운드 된) 텍스트 상자 – k0ni

답변

1

자바 스크립트 parseFloat() 기능이 NaN을 반환에 대한 먹으 렴 :

는 Acutally 내가 이런 식으로하고 있어요. 국제화를 들어 당신은 아마 부동 소수점 분리 교체해야합니다 (로, 예를.)

+0

parseFloat는 첫 번째 비 숫자에서 자릅니다. parseFloat ('1.23ABC') == 1.23. – Greg

+0

네가 맞아. 테스트하지 않았다 ... 아마 Regex 및 parseFloat와의 조합이 더 의미가있다. – Daff

+0

예,하지만 정규식을 올바르게 사용하는 방법은 무엇입니까? 나는 그것을 실행하지 못했습니다 .. – k0ni

1
parseFloat(value) and value.match('^[0-9]*\.[0-9]*$') 

을 난 당신이에서는 parseFloat을 삭제하고 단지 정규식을 사용할 수있는 것 같아요.

1

HTML 페이지에서 JS SetFloatEntry 메서드를 호출하기 만하면됩니다.

예 :

<html> 
<script> 
$(document).ready(function() { 

SetFloatEntry("weight"); 

}); 
</script> 
<body> 
    <input id="weight" type="text" /> 
</body> 
</html> 

은 JS 대해 참조 파일에 넣어 :

/* Main function */ 
function SetFloatEntry(fieldName) { 
    $("#" + fieldName).keydown(function (event) { 

     return NumericField($("#" + fieldName).val(), event, true); 

    }); 
} 


/* Auxiliar */ 
var strUserAgent = navigator.userAgent.toLowerCase(); 
var isIE = strUserAgent.indexOf('msie') > -1; 

var reKeyboardChars = /[\x03\x08\x09\x0D\x16\x18\x1A\x2E\x23\x24\x25\x26\x27\x28\x2D]/; 
var reNumber = /^((\d{1,3}\.)*\d{3}|\d*,{0,1}\d+|(\d{1,3}\.)*\d{3},{0,1}\d+|\d*)$/; 

function NumericField(str, objEvent, isFloat) { 

    oldValue = str; 
    strKey = GetChar(objEvent); 

    if (((objEvent.which) ? objEvent.which : event.keyCode) == 13 
     || (((objEvent.which) ? objEvent.which : event.keyCode) == 190 && isFloat)) 
     return true; 

    if (!KeyNumber(objEvent) 
      && !reKeyboardChars.test(strKey) 
      && !(objEvent.ctrlKey 
       && reClipboard.test(strKey))) 
     return false; 

    return true; 
} 

function KeyNumber(objEvent) { 
    return reNumber.test(GetChar(objEvent)); 
} 

function GetChar(objEvent) { 
    var arrKeys = new Array(); 
    arrKeys[96] = '0'; 
    arrKeys[97] = '1'; 
    arrKeys[98] = '2'; 
    arrKeys[99] = '3'; 
    arrKeys[100] = '4'; 
    arrKeys[101] = '5'; 
    arrKeys[102] = '6'; 
    arrKeys[103] = '7'; 
    arrKeys[104] = '8'; 
    arrKeys[105] = '9'; 

    arrKeys[111] = '/'; 
    arrKeys[193] = '/'; 

    iKeyCode = GetKeyCode(objEvent); 

    if (arrKeys[iKeyCode] != null) 
     return arrKeys[iKeyCode]; 

    return String.fromCharCode(iKeyCode); 
} 

function GetKeyCode(objEvent) { 
    if (isIE) 
     return objEvent.keyCode; 
    return objEvent.which; 
} 
+0

너무 많이하지 않아? –

+0

잘못된 항목과 형식을 모두 확인합니다. – Weslei