숫자와 소수점 만 허용하도록 텍스트 상자에 입력을 제한하려면 어떻게해야합니까?
답변
<HTML>
<HEAD>
<SCRIPT language=Javascript>
<!--
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode != 46 && charCode > 31
&& (charCode < 48 || charCode > 57))
return false;
return true;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<INPUT id="txtChar" onkeypress="return isNumberKey(event)"
type="text" name="txtChar">
</BODY>
</HTML>
이것은 정말로 작동합니다!
답변
form.onsubmit = function(){
return textarea.value.match(/^\d+(\.\d+)?$/);
}
이것이 당신이 찾고있는 것입니까?
도움이되기를 바랍니다.
편집 : 마침표가 하나만있을 수 있도록 위의 예제를 편집했습니다. 마침표는 하나 이상이고 그 뒤에는 하나 이상의 숫자가 있습니다.
답변
예를 들어 24 …. 22..22와 같이 여러 개의 ‘.’를 입력 할 수 있으므로 허용되는 솔루션이 완전하지 않습니다. 약간의 수정으로 의도 한대로 작동합니다.
<html>
<head>
<script type="text/javascript">
function isNumberKey(txt, evt) {
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode == 46) {
//Check if the text already contains the . character
if (txt.value.indexOf('.') === -1) {
return true;
} else {
return false;
}
} else {
if (charCode > 31 &&
(charCode < 48 || charCode > 57))
return false;
}
return true;
}
</script>
</head>
<body>
<input type="text" onkeypress="return isNumberKey(this, event);" />
</body>
</html>
답변
다음은 십진수를 허용하고 소수점 이하 자릿수를 소수점 이하 2 자리로 제한하는 또 다른 솔루션입니다.
function isNumberKey(evt, element) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57) && !(charCode == 46 || charCode == 8))
return false;
else {
var len = $(element).val().length;
var index = $(element).val().indexOf('.');
if (index > 0 && charCode == 46) {
return false;
}
if (index > 0) {
var CharAfterdot = (len + 1) - index;
if (CharAfterdot > 3) {
return false;
}
}
}
return true;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" id="rate" placeholder="Billing Rate" required onkeypress="return isNumberKey(event,this)">
답변
여기에 제시된 모든 솔루션은 단일 키 이벤트를 사용합니다. copy’n’paste 또는 drag’n’drop을 사용하여 입력을 제공 할 수도 있기 때문에 이것은 오류가 발생하기 쉽습니다. 또한 솔루션의 일부는 키가 같은 비 문자의 사용 제한 ctrl+c
, Pos1
등
모든 키 누름을 확인하는 대신 결과가 예상과 관련하여 유효한지 확인하는 것이 좋습니다.
var validNumber = new RegExp(/^\d*\.?\d*$/);
var lastValid = document.getElementById("test1").value;
function validateNumber(elem) {
if (validNumber.test(elem.value)) {
lastValid = elem.value;
} else {
elem.value = lastValid;
}
}
<textarea id="test1" oninput="validateNumber(this);" ></textarea>
이 oninput
이벤트는 텍스트 영역에서 무언가가 변경된 직후와 렌더링되기 전에 트리거됩니다.
허용하려는 숫자 형식으로 RegEx를 확장 할 수 있습니다. 이것은 단일 키 누름을 확인하는 것보다 훨씬 더 유지 관리 및 확장이 가능합니다.
답변
이와 같은 것을 찾고 있습니까?
<HTML>
<HEAD>
<SCRIPT language=Javascript>
<!--
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<INPUT id="txtChar" onkeypress="return isNumberKey(event)" type="text" name="txtChar">
</BODY>
</HTML>