ฉันจะ จำกัด การป้อนข้อมูลไว้ในกล่องข้อความเพื่อให้รับเฉพาะตัวเลขและจุดทศนิยมได้อย่างไร
isNaN(this.textbox.value)
??
ฉันจะ จำกัด การป้อนข้อมูลไว้ในกล่องข้อความเพื่อให้รับเฉพาะตัวเลขและจุดทศนิยมได้อย่างไร
isNaN(this.textbox.value)
??
คำตอบ:
<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>
ได้ผลจริง!
&& charCode != 190 && charCode != 110 && (charCode > 105 || charCode < 96)
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>
ondrop="return false;" onpaste="return false;" oncontextmenu="return false;"
ดูเหมือนจะเพียงพอ
นี่เป็นอีกหนึ่งวิธีแก้ปัญหาที่อนุญาตให้ใช้ตัวเลขทศนิยมและ จำกัด จำนวนหลักหลังทศนิยมถึงทศนิยม 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)">
if
ไม่มี "C" ตัวพิมพ์ใหญ่
.
), เส้นประ ( -
) และตัวอักษรe
เมื่อข้อความถูกวางหรือวางลงบนฟิลด์ องค์ประกอบ HTML จะแสดงลูกศรสองลูกสำหรับการเพิ่มและลดจำนวนตามค่าเริ่มต้นใน Chrome ปุ่มลดลงช่วยให้จำนวนลดลงต่ำกว่าศูนย์
โซลูชันทั้งหมดที่นำเสนอที่นี่ใช้เหตุการณ์สำคัญเดียว นี่เป็นข้อผิดพลาดได้ง่ายเนื่องจากสามารถป้อนข้อมูลได้โดยใช้ 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>
เพียงแค่ต้องใช้วิธีนี้ใน Jquery และคุณสามารถตรวจสอบกล่องข้อความของคุณเพื่อยอมรับตัวเลขที่มีทศนิยมเท่านั้น
function IsFloatOnly(element) {
var value = $(element).val();
var regExp ="^\\d+(\\.\\d+)?$";
return value.match(regExp);
}
โปรดดูการสาธิตการทำงานที่นี่
สำหรับใครก็ตามที่สะดุดที่นี่เหมือนที่ฉันทำนี่คือเวอร์ชัน jQuery 1.10.2 ที่ฉันเขียนซึ่งใช้งานได้ดีสำหรับฉันแม้ว่าทรัพยากรจะเข้มข้น:
/***************************************************
* Only allow numbers and one decimal in text boxes
***************************************************/
$('body').on('keydown keyup keypress change blur focus paste', 'input[type="text"]', function(){
var target = $(this);
var prev_val = target.val();
setTimeout(function(){
var chars = target.val().split("");
var decimal_exist = false;
var remove_char = false;
$.each(chars, function(key, value){
switch(value){
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case '.':
if(value === '.'){
if(decimal_exist === false){
decimal_exist = true;
}
else{
remove_char = true;
chars[''+key+''] = '';
}
}
break;
default:
remove_char = true;
chars[''+key+''] = '';
break;
}
});
if(prev_val != target.val() && remove_char === true){
target.val(chars.join(''))
}
}, 0);
});
การแก้ไขเล็กน้อยสำหรับคำตอบที่ยอดเยี่ยมของ @ rebisco เพื่อตรวจสอบทศนิยมอย่างสมบูรณ์แบบ
function isNumberKey(evt) {
debugger;
var charCode = (evt.which) ? evt.which : event.keyCode;
if (charCode == 46 && evt.srcElement.value.split('.').length>1) {
return false;
}
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
หากคุณต้องการเป็นค่าลอย
นี่คือฟังก์ชันที่ฉันใช้
<HTML>
<HEAD>
<SCRIPT language=Javascript>
<!--
function check(e, value) {
//Check Charater
var unicode = e.charCode ? e.charCode : e.keyCode;
if (value.indexOf(".") != -1)
if (unicode == 46) return false;
if (unicode != 8)
if ((unicode < 48 || unicode > 57) && unicode != 46) return false;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<INPUT id="txtChar" onkeypress="return check(event,value)" type="text" name="txtChar">
</BODY>
</HTML>
inputelement.onchange= inputelement.onkeyup= function isnumber(e){
e= window.event? e.srcElement: e.target;
while(e.value && parseFloat(e.value)+''!= e.value){
e.value= e.value.slice(0, -1);
}
}
function integerwithdot(s, iid){
var i;
s = s.toString();
for (i = 0; i < s.length; i++){
var c;
if (s.charAt(i) == ".") {
} else {
c = s.charAt(i);
}
if (isNaN(c)) {
c = "";
for(i=0;i<s.length-1;i++){
c += s.charAt(i);
}
document.getElementById(iid).value = c;
return false;
}
}
return true;
}
นี่คือสคริปต์ที่ cas ช่วยคุณ:
<script type="text/javascript">
// price text-box allow numeric and allow 2 decimal points only
function extractNumber(obj, decimalPlaces, allowNegative)
{
var temp = obj.value;
// avoid changing things if already formatted correctly
var reg0Str = '[0-9]*';
if (decimalPlaces > 0) {
reg0Str += '\[\,\.]?[0-9]{0,' + decimalPlaces + '}';
} else if (decimalPlaces < 0) {
reg0Str += '\[\,\.]?[0-9]*';
}
reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str;
reg0Str = reg0Str + '$';
var reg0 = new RegExp(reg0Str);
if (reg0.test(temp)) return true;
// first replace all non numbers
var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (decimalPlaces != 0 ? ',' : '') + (allowNegative ? '-' : '') + ']';
var reg1 = new RegExp(reg1Str, 'g');
temp = temp.replace(reg1, '');
if (allowNegative) {
// replace extra negative
var hasNegative = temp.length > 0 && temp.charAt(0) == '-';
var reg2 = /-/g;
temp = temp.replace(reg2, '');
if (hasNegative) temp = '-' + temp;
}
if (decimalPlaces != 0) {
var reg3 = /[\,\.]/g;
var reg3Array = reg3.exec(temp);
if (reg3Array != null) {
// keep only first occurrence of .
// and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
reg3Right = reg3Right.replace(reg3, '');
reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
temp = temp.substring(0,reg3Array.index) + '.' + reg3Right;
}
}
obj.value = temp;
}
function blockNonNumbers(obj, e, allowDecimal, allowNegative)
{
var key;
var isCtrl = false;
var keychar;
var reg;
if(window.event) {
key = e.keyCode;
isCtrl = window.event.ctrlKey
}
else if(e.which) {
key = e.which;
isCtrl = e.ctrlKey;
}
if (isNaN(key)) return true;
keychar = String.fromCharCode(key);
// check for backspace or delete, or if Ctrl was pressed
if (key == 8 || isCtrl)
{
return true;
}
reg = /\d/;
var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
var isFirstC = allowDecimal ? keychar == ',' && obj.value.indexOf(',') == -1 : false;
return isFirstN || isFirstD || isFirstC || reg.test(keychar);
}
function blockInvalid(obj)
{
var temp=obj.value;
if(temp=="-")
{
temp="";
}
if (temp.indexOf(".")==temp.length-1 && temp.indexOf(".")!=-1)
{
temp=temp+"00";
}
if (temp.indexOf(".")==0)
{
temp="0"+temp;
}
if (temp.indexOf(".")==1 && temp.indexOf("-")==0)
{
temp=temp.replace("-","-0") ;
}
if (temp.indexOf(",")==temp.length-1 && temp.indexOf(",")!=-1)
{
temp=temp+"00";
}
if (temp.indexOf(",")==0)
{
temp="0"+temp;
}
if (temp.indexOf(",")==1 && temp.indexOf("-")==0)
{
temp=temp.replace("-","-0") ;
}
temp=temp.replace(",",".") ;
obj.value=temp;
}
// end of price text-box allow numeric and allow 2 decimal points only
</script>
<input type="Text" id="id" value="" onblur="extractNumber(this,2,true);blockInvalid(this);" onkeyup="extractNumber(this,2,true);" onkeypress="return blockNonNumbers(this, event, true, true);">
สมมติว่าชื่อช่อง textbox ของคุณIncome
เรียกวิธีนี้ว่า validate เมื่อคุณต้องการตรวจสอบความถูกต้องของช่องของคุณ:
function validate() {
var currency = document.getElementById("Income").value;
var pattern = /^[1-9]\d*(?:\.\d{0,2})?$/ ;
if (pattern.test(currency)) {
alert("Currency is in valid format");
return true;
}
alert("Currency is not in valid format!Enter in 00.00 format");
return false;
}
ขยายคำตอบของ @ rebisco รหัสด้านล่างนี้จะอนุญาตให้ใช้เฉพาะตัวเลขและ "." (จุด) เดียวในกล่องข้อความ
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode;
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
} else {
// If the number field already has . then don't allow to enter . again.
if (evt.target.value.search(/\./) > -1 && charCode == 46) {
return false;
}
return true;
}
}
ทางออกที่ดีกว่า
var checkfloats = function(event){
var charCode = (event.which) ? event.which : event.keyCode;
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57))
return false;
if(event.target.value.indexOf('.') >=0 && charCode == 46)
return false;
return true;
}
ฉันเลือกที่จะจัดการกับoninput
เหตุการณ์นี้เพื่อจัดการปัญหาการวางแป้นพิมพ์การวางเมาส์และการกดแป้น ส่งผ่านจริงหรือเท็จเพื่อระบุการตรวจสอบทศนิยมหรือจำนวนเต็ม
โดยพื้นฐานแล้วเป็นสามขั้นตอนในสามหนึ่งสมุทร หากคุณไม่ต้องการตัดทอนทศนิยมให้ทำขั้นตอนที่สาม การปรับสำหรับการปัดเศษสามารถทำได้ในขั้นตอนที่สามเช่นกัน
// Example Decimal usage;
// <input type="text" oninput="ValidateNumber(this, true);" />
// Example Integer usage:
// <input type="text" oninput="ValidateNumber(this, false);" />
function ValidateNumber(elm, isDecimal) {
try {
// For integers, replace everything except for numbers with blanks.
if (!isDecimal)
elm.value = elm.value.replace(/[^0-9]/g, '');
else {
// 1. For decimals, replace everything except for numbers and periods with blanks.
// 2. Then we'll remove all leading ocurrences (duplicate) periods
// 3. Then we'll chop off anything after two decimal places.
// 1. replace everything except for numbers and periods with blanks.
elm.value = elm.value.replace(/[^0-9.]/g, '');
//2. remove all leading ocurrences (duplicate) periods
elm.value = elm.value.replace(/\.(?=.*\.)/g, '');
// 3. chop off anything after two decimal places.
// In comparison to lengh, our index is behind one count, then we add two for our decimal places.
var decimalIndex = elm.value.indexOf('.');
if (decimalIndex != -1) { elm.value = elm.value.substr(0, decimalIndex + 3); }
}
}
catch (err) {
alert("ValidateNumber " + err);
}
}
เริ่มต้นจากคำตอบ @rebisco:
function count_appearance(mainStr, searchFor) {
return (mainStr.split(searchFor).length - 1);
}
function isNumberKey(evt)
{
$return = true;
var charCode = (evt.which) ? evt.which : event.keyCode;
if (charCode != 46 && charCode > 31
&& (charCode < 48 || charCode > 57))
$return = false;
$val = $(evt.originalTarget).val();
if (charCode == 46) {
if (count_appearance($val, '.') > 0) {
$return = false;
}
if ($val.length == 0) {
$return = false;
}
}
return $return;
}
อนุญาตเฉพาะรูปแบบนี้: 123123123 [.121213]
สาธิตที่นี่สาธิต
หวังว่าจะได้ผลสำหรับคุณ
<input type="text" onkeypress="return chkNumeric(event)" />
<script>
function chkNumeric(evt) {
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
if (charCode == 46) { return true; }
else { return false; }
}
return true;
}
</script>
รหัสต่อไปนี้ใช้ได้ผลสำหรับฉัน
ช่องป้อนข้อมูลที่มีเหตุการณ์ "onkeypress" ดังนี้
<input type="text" onkeypress="return isNumberKey(this,event);" />
ฟังก์ชัน "isNumberKey" มีดังนี้
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;
}
ฉันสังเกตว่าสำหรับคำตอบทั้งหมดที่ให้ไว้ที่นี่สิ่งต่างๆจะไม่ทำงานหากเราเลือกบางส่วนของข้อความในกล่องข้อความและพยายามเขียนทับส่วนนั้น ดังนั้นฉันจึงแก้ไขฟังก์ชั่นดังต่อไปนี้:
<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;
}
if (charCode == 46 && evt.srcElement.value.split('.').length>1 )
{
return false;
}
if(evt.srcElement.selectionStart<evt.srcElement.selectionEnd)
{
return true;
}
if(evt.srcElement.value.split('.').length>1 && evt.srcElement.value.split('.')[1].length==2)
{
return false;
}
return true;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<INPUT id="txtChar" onkeypress="return isNumberKey(event)"
type="text" name="txtChar">
</BODY>
</HTML>
สำหรับเลขฐานสิบและยังอนุญาตให้ใช้ตัวเลขเชิงลบโดยมี 2 ตำแหน่งสำหรับทศนิยมหลังจุด ... ฉันแก้ไขฟังก์ชันเป็น:
<input type="text" id="txtSample" onkeypress="return isNumberKey(event,this)"/>
function isNumberKey(evt, element){
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57) && !(charCode == 46 || charCode == 8 || charCode == 45))
return false;
else {
var len = $(element).val().length;
// Validation Point
var index = $(element).val().indexOf('.');
if ((index > 0 && charCode == 46) || len == 0 && charCode == 46) {
return false;
}
if (index > 0) {
var CharAfterdot = (len + 1) - index;
if (CharAfterdot > 3) {
return false;
}
}
// Validating Negative sign
index = $(element).val().indexOf('-');
if ((index > 0 && charCode == 45) || (len > 0 && charCode == 45)) {
return false;
}
}
return true;
}
ทางเลือกอื่นในการ จำกัด การป้อนข้อมูลลงในกล่องข้อความเพื่อให้ยอมรับเฉพาะตัวเลขและจุดทศนิยมคือการใช้จาวาสคริปต์ในอินพุต html สิ่งนี้ใช้ได้กับฉัน:
<input type="text" class="form-control" id="price" name="price" placeholder="Price"
vrequired onkeyup="this.value=this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1')">
- ยอมรับ -
9
9.99
--ไม่ยอมรับ--
9.99.99
ABC
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : evt.keyCode;
if(charCode==8 || charCode==13|| charCode==99|| charCode==118 || charCode==46)
{
return true;
}
if (charCode > 31 && (charCode < 48 || charCode > 57))
{
return false;
}
return true;
}
จะอนุญาตเฉพาะตัวเลขและให้คุณใส่ "." สำหรับทศนิยม
<script type="text/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>
@Html.EditorFor(model => model.Orderids, new { id = "Orderids", Onkeypress=isNumberKey(event)})
ใช้งานได้ดี
โซลูชันที่ดีที่สุดและใช้งานได้กับตัวอย่าง Pure-Javascript Live Demo: https://jsfiddle.net/manoj2010/ygkpa89o/
<script>
function removeCommas(nStr) {
if (nStr == null || nStr == "")
return "";
return nStr.toString().replace(/,/g, "");
}
function NumbersOnly(myfield, e, dec,neg)
{
if (isNaN(removeCommas(myfield.value)) && myfield.value != "-") {
return false;
}
var allowNegativeNumber = neg || false;
var key;
var keychar;
if (window.event)
key = window.event.keyCode;
else if (e)
key = e.which;
else
return true;
keychar = String.fromCharCode(key);
var srcEl = e.srcElement ? e.srcElement : e.target;
// control keys
if ((key == null) || (key == 0) || (key == 8) ||
(key == 9) || (key == 13) || (key == 27))
return true;
// numbers
else if ((("0123456789").indexOf(keychar) > -1))
return true;
// decimal point jump
else if (dec && (keychar == ".")) {
//myfield.form.elements[dec].focus();
return srcEl.value.indexOf(".") == -1;
}
//allow negative numbers
else if (allowNegativeNumber && (keychar == "-")) {
return (srcEl.value.length == 0 || srcEl.value == "0.00")
}
else
return false;
}
</script>
<input name="txtDiscountSum" type="text" onKeyPress="return NumbersOnly(this, event,true)" />
การแก้ไขปัญหาด้วยตัวเองและนั่นคือสิ่งที่ฉันได้รับจนถึงตอนนี้ สิ่งนี้ใช้ได้ผลมากหรือน้อย แต่ไม่สามารถบวกลบได้ในภายหลังเนื่องจากการตรวจสอบค่าใหม่ ยังไม่อนุญาตให้ลูกน้ำเป็นตัวคั่นหลักพันเฉพาะทศนิยม
มันไม่สมบูรณ์แบบ แต่อาจให้ความคิดบางอย่าง
app.directive('isNumber', function () {
return function (scope, elem, attrs) {
elem.bind('keypress', function (evt) {
var keyCode = (evt.which) ? evt.which : event.keyCode;
var testValue = (elem[0].value + String.fromCharCode(keyCode) + "0").replace(/ /g, ""); //check ignores spaces
var regex = /^\-?\d+((\.|\,)\d+)?$/;
var allowedChars = [8,9,13,27,32,37,39,44,45, 46] //control keys and separators
//allows numbers, separators and controll keys and rejects others
if ((keyCode > 47 && keyCode < 58) || allowedChars.indexOf(keyCode) >= 0) {
//test the string with regex, decline if doesn't fit
if (elem[0].value != "" && !regex.test(testValue)) {
event.preventDefault();
return false;
}
return true;
}
event.preventDefault();
return false;
});
};
});
อนุญาต:
11 11 .245 (ในคอนโทรลเลอร์ที่ฟอร์แมตเบลอเป็น 1111.245)
11,44
-123.123
-1 014
0123 (จัดรูปแบบเบลอเป็น 123)
ไม่อนุญาต:
! @ # $ / *
abc
11.11.1
11,11.1
.42
<input type="text" onkeypress="return isNumberKey(event,this)">
<script>
function isNumberKey(evt, obj) {
var charCode = (evt.which) ? evt.which : event.keyCode
var value = obj.value;
var dotcontains = value.indexOf(".") != -1;
if (dotcontains)
if (charCode == 46) return false;
if (charCode == 46) return true;
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
</script>
ฉันรู้ว่าคำถามนี้เก่ามาก แต่เราก็มักจะได้รับข้อกำหนดดังกล่าว มีตัวอย่างจำนวนมากอย่างไรก็ดีหลายคนดูเหมือนจะมากเกินไปverboseหรือซับซ้อนสำหรับ implimentation ง่าย
ดูhttps://jsfiddle.net/vibs2006/rn0fvxuk/และปรับปรุง (ถ้าทำได้) ทำงานบน IE, Firefox, Chrome และ Edge Browser
นี่คือรหัสการทำงาน
function IsNumeric(e) {
var IsValidationSuccessful = false;
console.log(e.target.value);
document.getElementById("info").innerHTML = "You just typed ''" + e.key + "''";
//console.log("e.Key Value = "+e.key);
switch (e.key)
{
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
case "0":
case "Backspace":
IsValidationSuccessful = true;
break;
case "Decimal": //Numpad Decimal in Edge Browser
case ".": //Numpad Decimal in Chrome and Firefox
case "Del": // Internet Explorer 11 and less Numpad Decimal
if (e.target.value.indexOf(".") >= 1) //Checking if already Decimal exists
{
IsValidationSuccessful = false;
}
else
{
IsValidationSuccessful = true;
}
break;
default:
IsValidationSuccessful = false;
}
//debugger;
if(IsValidationSuccessful == false){
document.getElementById("error").style = "display:Block";
}else{
document.getElementById("error").style = "display:none";
}
return IsValidationSuccessful;
}
Numeric Value: <input type="number" id="text1" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;" /><br />
<span id="error" style="color: Red; display: none">* Input digits (0 - 9) and Decimals Only</span><br />
<div id="info"></div>
<input type="text" onkeypress='return event.charCode >= 48 && event.charCode <= 57'>
คุณสามารถ จำกัด ค่าที่ผู้ใช้ป้อนโดยระบุช่วงค่า ASCII
ตัวอย่าง : 48 ถึง 57 สำหรับค่าตัวเลข (0 ถึง 9)