มีวิธีที่รวดเร็วในการตั้งค่าการป้อนข้อความ HTML ( <input type=text />
) เพื่ออนุญาตการกดแป้นตัวเลขเท่านั้น (บวก '.')?
<input type="text" onkeypress='return event.charCode >= 48 && event.charCode <= 57'></input>
มีวิธีที่รวดเร็วในการตั้งค่าการป้อนข้อความ HTML ( <input type=text />
) เพื่ออนุญาตการกดแป้นตัวเลขเท่านั้น (บวก '.')?
<input type="text" onkeypress='return event.charCode >= 48 && event.charCode <= 57'></input>
คำตอบ:
หมายเหตุ:นี่เป็นคำตอบที่อัพเดทแล้ว ความคิดเห็นด้านล่างอ้างถึงเวอร์ชันเก่าซึ่งยุ่งกับรหัส
ลองตัวเองใน JSFiddle
คุณสามารถกรองค่าอินพุตของข้อความ<input>
ด้วยsetInputFilter
ฟังก์ชั่นต่อไปนี้(รองรับการคัดลอก + วาง, ลาก + วาง, แป้นพิมพ์ลัด, การทำงานของเมนูบริบท, คีย์ที่ไม่สามารถพิมพ์ได้, ตำแหน่งคาเร็ต, รูปแบบแป้นพิมพ์ที่แตกต่างกันและเบราว์เซอร์ทั้งหมดตั้งแต่ IE 9 ) :
// Restricts input for the given textbox to the given inputFilter function.
function setInputFilter(textbox, inputFilter) {
["input", "keydown", "keyup", "mousedown", "mouseup", "select", "contextmenu", "drop"].forEach(function(event) {
textbox.addEventListener(event, function() {
if (inputFilter(this.value)) {
this.oldValue = this.value;
this.oldSelectionStart = this.selectionStart;
this.oldSelectionEnd = this.selectionEnd;
} else if (this.hasOwnProperty("oldValue")) {
this.value = this.oldValue;
this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
} else {
this.value = "";
}
});
});
}
ตอนนี้คุณสามารถใช้setInputFilter
ฟังก์ชั่นเพื่อติดตั้งตัวกรองอินพุต:
setInputFilter(document.getElementById("myTextBox"), function(value) {
return /^\d*\.?\d*$/.test(value); // Allow digits and '.' only, using a RegExp
});
ดูตัวอย่างของตัวกรองอินพุตเพิ่มเติมJSFiddle โปรดทราบว่าคุณยังต้องทำการตรวจสอบฝั่งเซิร์ฟเวอร์!
นี่คือเวอร์ชั่นของ TypeScript
function setInputFilter(textbox: Element, inputFilter: (value: string) => boolean): void {
["input", "keydown", "keyup", "mousedown", "mouseup", "select", "contextmenu", "drop"].forEach(function(event) {
textbox.addEventListener(event, function(this: (HTMLInputElement | HTMLTextAreaElement) & {oldValue: string; oldSelectionStart: number | null, oldSelectionEnd: number | null}) {
if (inputFilter(this.value)) {
this.oldValue = this.value;
this.oldSelectionStart = this.selectionStart;
this.oldSelectionEnd = this.selectionEnd;
} else if (Object.prototype.hasOwnProperty.call(this, 'oldValue')) {
this.value = this.oldValue;
if (this.oldSelectionStart !== null &&
this.oldSelectionEnd !== null) {
this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
}
} else {
this.value = "";
}
});
});
}
นอกจากนี้ยังมีรุ่น jQuery ดูคำตอบนี้นี้
HTML 5 มีโซลูชันแบบเนทีฟด้วย<input type="number">
(ดูข้อกำหนด ) แต่โปรดทราบว่าการสนับสนุนเบราว์เซอร์แตกต่างกันไป:
step
, min
และmax
คุณลักษณะe
และE
ลงในฟิลด์ ดูคำถามนี้ด้วยลองตัวเองใน w3schools.com
(e.keyCode == 65 && (e.ctrlKey === true || e.metaKey === true))
ใช้ DOM นี้
<input type='text' onkeypress='validate(event)' />
และสคริปต์นี้
function validate(evt) {
var theEvent = evt || window.event;
// Handle paste
if (theEvent.type === 'paste') {
key = event.clipboardData.getData('text/plain');
} else {
// Handle key press
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode(key);
}
var regex = /[0-9]|\./;
if( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
ฉันค้นหามานานและยากสำหรับคำตอบที่ดีสำหรับสิ่งนี้และเราต้องการอย่างยิ่ง<input type="number"
แต่สั้น ๆ ว่า 2 สิ่งนี้เป็นวิธีที่กระชับที่สุดที่ฉันสามารถหาได้:
<input type="text"
onkeyup="this.value=this.value.replace(/[^\d]/,'')">
หากคุณไม่ชอบตัวละครที่ไม่ได้รับการยอมรับแสดงเป็นเสี้ยววินาทีก่อนที่จะถูกลบวิธีการด้านล่างนี้คือโซลูชันของฉัน โปรดทราบเงื่อนไขเพิ่มเติมมากมายเพื่อหลีกเลี่ยงการปิดใช้งานการนำทางและปุ่มลัดทุกประเภท หากใครรู้วิธีการทำให้เล็กลงนี้ให้เราทราบ!
<input type="text"
onkeydown="return ( event.ctrlKey || event.altKey
|| (47<event.keyCode && event.keyCode<58 && event.shiftKey==false)
|| (95<event.keyCode && event.keyCode<106)
|| (event.keyCode==8) || (event.keyCode==9)
|| (event.keyCode>34 && event.keyCode<40)
|| (event.keyCode==46) )">
/[^\d+]/
และใช้งานได้กับการกดค้างไว้
/[^\d]+/
แทน ทางออกที่ดีแม้ว่า นอกจากนี้ @ user235859
.
เช่นกัน คุณควรสร้างมันขึ้นมา/[^0-9.]/g
นี่คือตัวอย่างง่าย ๆ ที่อนุญาตให้มีทศนิยมหนึ่งตำแหน่ง แต่ไม่เกิน:
<input type="text" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" />
และอีกตัวอย่างหนึ่งซึ่งใช้งานได้ดีสำหรับฉัน:
function validateNumber(event) {
var key = window.event ? event.keyCode : event.which;
if (event.keyCode === 8 || event.keyCode === 46) {
return true;
} else if ( key < 48 || key > 57 ) {
return false;
} else {
return true;
}
};
แนบไปกับเหตุการณ์ปุ่มกด
$(document).ready(function(){
$('[id^=edit]').keypress(validateNumber);
});
และ HTML:
<input type="input" id="edit1" value="0" size="5" maxlength="5" />
HTML5 มี<input type=number>
แล้วที่เหมาะกับคุณ ขณะนี้มีเพียง Opera เท่านั้นที่รองรับอย่างเป็นทางการ แต่มีโครงการที่มีการใช้งาน JavaScript
type=number
คือไม่รองรับ IE9
type=number
คือการอนุญาตให้ใช้e
ถ่านเพราะมันถือว่าe+10
เป็นตัวเลข ปัญหาที่สองคือคุณไม่สามารถ จำกัด จำนวนตัวอักษรได้สูงสุดในอินพุต
คำตอบส่วนใหญ่ที่นี่ทุกคนมีความอ่อนแอของการใช้เหตุการณ์คีย์
คำตอบหลายข้อจะจำกัดความสามารถของคุณในการเลือกข้อความด้วยมาโครคีย์บอร์ดคัดลอก + วางและพฤติกรรมที่ไม่พึงประสงค์อื่น ๆ ดูเหมือนว่าคนอื่นจะขึ้นอยู่กับปลั๊กอิน jQuery เฉพาะซึ่งฆ่าแมลงวันด้วยปืนกล
วิธีแก้ปัญหาอย่างง่ายนี้ดูเหมือนจะทำงานได้ดีที่สุดสำหรับฉันข้ามแพลตฟอร์มโดยไม่คำนึงถึงกลไกการป้อนข้อมูล (การกดแป้น, คัดลอก + วาง, คลิกขวาคัดลอก + วาง, เปลี่ยนเสียงพูดเป็นข้อความ ฯลฯ ) แมโครคีย์บอร์ดการเลือกข้อความทั้งหมดยังคงใช้งานได้และจะจำกัดความสามารถในการตั้งค่าที่ไม่ใช่ตัวเลขด้วยสคริปต์
function forceNumeric(){
var $input = $(this);
$input.val($input.val().replace(/[^\d]+/g,''));
}
$('body').on('propertychange input', 'input[type="number"]', forceNumeric);
replace(/[^\d]+/g,'')
แทนที่ไม่ใช่ตัวเลขทั้งหมดด้วยสตริงว่าง ไม่ต้องการตัวดัดแปลง "i" (ตัวพิมพ์เล็กและตัวพิมพ์เล็ก)
/[^\d,.]+/
ฉันเลือกใช้ทั้งสองคำตอบที่กล่าวถึงที่นี่เช่น
<input type="number" />
และ
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : evt.keyCode
return !(charCode > 31 && (charCode < 48 || charCode > 57));
}
<input type="text" onkeypress="return isNumberKey(event);">
return !(charCode > 31 && (charCode < 48 || charCode > 57));
HTML5 รองรับ regexes ดังนั้นคุณสามารถใช้สิ่งนี้:
<input id="numbersOnly" pattern="[0-9.]+" type="text">
คำเตือน: เบราว์เซอร์บางตัวยังไม่รองรับ
<input type=number>
นอกจากนี้ยังมี
+
หมายถึงในแอตทริบิวต์รูปแบบ?
JavaScript
function validateNumber(evt) {
var e = evt || window.event;
var key = e.keyCode || e.which;
if (!e.shiftKey && !e.altKey && !e.ctrlKey &&
// numbers
key >= 48 && key <= 57 ||
// Numeric keypad
key >= 96 && key <= 105 ||
// Backspace and Tab and Enter
key == 8 || key == 9 || key == 13 ||
// Home and End
key == 35 || key == 36 ||
// left and right arrows
key == 37 || key == 39 ||
// Del and Ins
key == 46 || key == 45) {
// input is VALID
}
else {
// input is INVALID
e.returnValue = false;
if (e.preventDefault) e.preventDefault();
}
}
เพิ่มเติมคุณสามารถเพิ่มจุลภาคระยะเวลาและลบ (, .-)
// comma, period and minus, . on keypad
key == 190 || key == 188 || key == 109 || key == 110 ||
HTML
<input type="text" onkeydown="validateNumber(event);"/ >
ง่ายมาก ....
// ในฟังก์ชั่น JavaScript (สามารถใช้ HTML หรือ PHP)
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
ในการป้อนแบบฟอร์มของคุณ:
<input type=text name=form_number size=20 maxlength=12 onkeypress='return isNumberKey(event)'>
ด้วยอินพุตสูงสุด (ข้างต้นใช้สำหรับตัวเลข 12 หลัก)
var charCode = (evt.which) ? evt.which : evt.keyCode;
2 โซลูชั่น:
ใช้ตัวตรวจสอบความถูกต้องของฟอร์ม (ตัวอย่างเช่นกับปลั๊กอินการตรวจสอบความถูกต้องของ jQuery )
ทำการตรวจสอบในระหว่างเหตุการณ์ onblur (เช่นเมื่อผู้ใช้ออกจากสนาม) ของฟิลด์อินพุตด้วยนิพจน์ทั่วไป:
<script type="text/javascript">
function testField(field) {
var regExpr = new RegExp("^\d*\.?\d*$");
if (!regExpr.test(field.value)) {
// Case of error
field.value = "";
}
}
</script>
<input type="text" ... onblur="testField(this);"/>
var regExpr = /^\d+(\.\d*)?$/;
.123
(แทน0.123
) เช่น?
var regExpr = /^\d+(\.\d*)?$|^\.\d+$/;
.
วิธีที่ปลอดภัยกว่าคือการตรวจสอบค่าของอินพุตแทนการไฮแจ็กคีย์กดและพยายามกรองคีย์โค้ด
วิธีนี้ทำให้ผู้ใช้มีอิสระในการใช้แป้นลูกศรแป้นตัวดัดแปลงพื้นที่ถอยหลังลบใช้แป้นพิมพ์มาตรฐานที่ไม่เป็นมาตรฐานใช้เมาส์เพื่อวางใช้ลากและวางข้อความแม้ใช้อินพุตสำหรับการเข้าถึง
สคริปต์ด้านล่างอนุญาตให้ใช้จำนวนบวกและลบ
1
10
100.0
100.01
-1
-1.0
-10.00
1.0.0 //not allowed
var input = document.getElementById('number');
input.onkeyup = input.onchange = enforceFloat;
//enforce that only a float can be inputed
function enforceFloat() {
var valid = /^\-?\d+\.\d*$|^\-?[\d]*$/;
var number = /\-\d+\.\d*|\-[\d]*|[\d]+\.[\d]*|[\d]+/;
if (!valid.test(this.value)) {
var n = this.value.match(number);
this.value = n ? n[0] : '';
}
}
<input id="number" value="-3.1415" placeholder="Type a number" autofocus>
แก้ไข: ฉันลบคำตอบเก่าของฉันเพราะฉันคิดว่ามันเก่าแล้ว
คุณสามารถใช้รูปแบบสำหรับสิ่งนี้:
<input id="numbers" pattern="[0-9.]+" type="number">
ที่นี่คุณสามารถดูเคล็ดลับที่สมบูรณ์อินเตอร์เฟซที่เว็บไซต์บนมือถือ
กรุณาหาวิธีแก้ปัญหาดังกล่าวด้านล่าง ในผู้ใช้รายนี้จะสามารถป้อนเฉพาะnumeric
ค่านอกจากนี้ผู้ใช้ไม่สามารถจะสามารถcopy
, paste
, drag
และdrop
ในการป้อนข้อมูล
อักขระที่อนุญาต
0,1,2,3,4,5,6,7,8,9
ไม่อนุญาตให้ใช้อักขระและอักขระผ่านเหตุการณ์
$(document).ready(function() {
$('#number').bind("cut copy paste drag drop", function(e) {
e.preventDefault();
});
});
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="form-control" name="number" id="number" onkeypress="return isNumberKey(event)" placeholder="Enter Numeric value only">
แจ้งให้เราทราบหากไม่ได้ผล
หากคุณต้องการที่จะขอแนะนำให้อุปกรณ์ (อาจจะเป็นโทรศัพท์มือถือ) <input type="number">
ระหว่างอัลฟ่าหรือตัวเลขที่คุณสามารถใช้
อีกตัวอย่างหนึ่งที่คุณสามารถเพิ่มตัวเลขได้เฉพาะในฟิลด์อินพุตไม่สามารถตัวอักษร
<input type="text" class="form-control" id="phone" name="phone" placeholder="PHONE" spellcheck="false" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');">
การใช้งานแบบสั้นและหวานโดยใช้ jQuery และ replace () แทนที่จะดูที่ event.keyCode หรือ event.which:
$('input.numeric').live('keyup', function(e) {
$(this).val($(this).val().replace(/[^0-9]/g, ''));
});
เฉพาะผลข้างเคียงขนาดเล็กที่ตัวอักษรที่พิมพ์ปรากฏขึ้นชั่วขณะและ CTRL / CMD + A ดูเหมือนจะทำงานแปลก ๆ
input type="number"
เป็นแอตทริบิวต์ HTML5
ในกรณีอื่น ๆ สิ่งนี้จะช่วยคุณ:
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : evt.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
<input type="number" name="somecode" onkeypress="return isNumberKey(event)"/>
var charCode = (evt.which) ? evt.which : evt.keyCode;
รหัส JavaScript:
function validate(evt)
{
if(evt.keyCode!=8)
{
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode(key);
var regex = /[0-9]|\./;
if (!regex.test(key))
{
theEvent.returnValue = false;
if (theEvent.preventDefault)
theEvent.preventDefault();
}
}
}
รหัส HTML:
<input type='text' name='price' value='0' onkeypress='validate(event)'/>
ทำงานได้อย่างสมบูรณ์เพราะรหัส Backspace คือ 8 และนิพจน์ regex ไม่อนุญาตดังนั้นจึงเป็นวิธีที่ง่ายในการข้ามจุดบกพร่อง :)
วิธีง่ายๆในการแก้ไขปัญหานี้คือการใช้ฟังก์ชั่น jQuery เพื่อตรวจสอบกับ regex charaters ที่พิมพ์ในกล่องข้อความตัวอย่างเช่น:
รหัส html ของคุณ:
<input class="integerInput" type="text">
และฟังก์ชั่น js ใช้ jQuery
$(function() {
$('.integerInput').on('input', function() {
this.value = this.value
.replace(/[^\d]/g, '');// numbers and decimals only
});
});
$(function() {
$('.integerInput').on('input', function() {
this.value = this.value
.replace(/[^\d]/g, '');// numbers and decimals only
});
});
<script
src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous">
</script>
<input type="text" class="integerInput"/>
เป็นเพียงตัวแปรอื่นที่ใช้ jQuery
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
เพียงแค่ใช้type = "number"ตอนนี้คุณสมบัตินี้รองรับเบราว์เซอร์ส่วนใหญ่
<input type="number" maxlength="3" ng-bind="first">
--1
(2 ลบอักขระก่อนหน้า 1)
คุณยังสามารถเปรียบเทียบค่าอินพุต (ซึ่งถือว่าเป็นสตริงโดยค่าเริ่มต้น) กับตัวเองที่บังคับเป็นตัวเลขเช่น:
if(event.target.value == event.target.value * 1) {
// returns true if input value is numeric string
}
อย่างไรก็ตามคุณต้องผูกสิ่งนั้นกับเหตุการณ์เช่นการกดคีย์เป็นต้น
<input name="amount" type="text" value="Only number in here"/>
<script>
$('input[name=amount]').keyup(function(){
$(this).val($(this).val().replace(/[^\d]/,''));
});
</script>
ฉันเห็นคำตอบที่ยอดเยี่ยม แต่ฉันชอบพวกเขาที่เล็กและเรียบง่ายที่สุดเท่าที่จะทำได้ดังนั้นอาจมีบางคนได้รับประโยชน์จากมัน ฉันจะใช้จาวาสคริปต์Number()
และisNaN
ฟังก์ชั่นเช่นนี้:
if(isNaN(Number(str))) {
// ... Exception it is NOT a number
} else {
// ... Do something you have a number
}
หวังว่านี่จะช่วยได้
ใช้ DOM นี้:
<input type = "text" onkeydown = "validate(event)"/>
และสคริปต์นี้:
validate = function(evt)
{
if ([8, 46, 37, 39, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 35, 36].indexOf(evt.keyCode || evt.which) == -1)
{
evt.returnValue = false;
if(evt.preventDefault){evt.preventDefault();}
}
}
... หรือสคริปต์นี้ไม่มี indexOf ใช้สองfor
...
validate = function(evt)
{
var CharValidate = new Array("08", "046", "039", "948", "235");
var number_pressed = false;
for (i = 0; i < 5; i++)
{
for (Ncount = 0; Ncount < parseInt(CharValidate[i].substring(0, 1)) + 1; Ncount++)
{
if ((evt.keyCode || evt.which) == parseInt(CharValidate[i].substring(1, CharValidate[i].lenght)) + Ncount)
{
number_pressed = true;
}
}
}
if (number_pressed == false)
{
evt.returnValue = false;
if(evt.preventDefault){evt.preventDefault();}
}
}
ฉันใช้แอ็ตทริบิวต์ onkeydown แทน onkeypress เพราะแอ็ตทริบิวต์ onkeydown ถูกตรวจสอบก่อนแอ็ตทริบิวต์ onkeypress ปัญหาจะอยู่ในเบราว์เซอร์ Google Chrome
ด้วยแอตทริบิวต์ "onkeypress" TAB จะไม่สามารถควบคุมได้ด้วย "preventDefault" บน google chrome อย่างไรก็ตามด้วยแอตทริบิวต์ "onkeydown" TAB จะสามารถควบคุมได้!
รหัส ASCII สำหรับ TAB => 9
สคริปต์แรกมีรหัสน้อยกว่าวินาทีอย่างไรก็ตามอาร์เรย์ของอักขระ ASCII ต้องมีคีย์ทั้งหมด
สคริปต์ที่สองมีขนาดใหญ่กว่าสคริปต์แรก แต่อาร์เรย์ไม่ต้องการคีย์ทั้งหมด ตัวเลขแรกในแต่ละตำแหน่งของอาเรย์คือจำนวนครั้งที่แต่ละตำแหน่งจะถูกอ่าน สำหรับการอ่านแต่ละครั้งจะเพิ่มขึ้น 1 เป็นหนึ่งต่อไป ตัวอย่างเช่น:
NCount = 0
48 + NCount = 48
NCount + +
48 + NCount = 49
NCount + +
...
48 + NCount = 57
ในกรณีของปุ่มตัวเลขมีเพียง 10 (0 - 9) แต่ถ้าเป็น 1 ล้านจะไม่เหมาะสมที่จะสร้างอาร์เรย์ด้วยปุ่มเหล่านี้ทั้งหมด
รหัส ASCII:
นี่คือฟังก์ชั่นที่ได้รับการปรับปรุง:
function validateNumber(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
if ((key < 48 || key > 57) && !(key == 8 || key == 9 || key == 13 || key == 37 || key == 39 || key == 46) ){
theEvent.returnValue = false;
if (theEvent.preventDefault) theEvent.preventDefault();
}
}
วิธีที่ดีที่สุด (อนุญาตให้ใช้ตัวเลขทุกประเภท - ค่าลบจริง, บวกจริง, ลบ iinteger, จำนวนเต็มบวก) คือ:
$(input).keypress(function (evt){
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode( key );
var regex = /[-\d\.]/; // dowolna liczba (+- ,.) :)
var objRegex = /^-?\d*[\.]?\d*$/;
var val = $(evt.target).val();
if(!regex.test(key) || !objRegex.test(val+key) ||
!theEvent.keyCode == 46 || !theEvent.keyCode == 8) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
};
});
นี่เป็นโซลูชันเพิ่มเติมของgeowa4รุ่นเพิ่มเติม รองรับmin
และmax
คุณสมบัติ หากตัวเลขอยู่นอกช่วงค่าก่อนหน้าจะปรากฏขึ้น
การใช้งาน: <input type=text class='number' maxlength=3 min=1 max=500>
function number(e) {
var theEvent = e || window.event;
var key = theEvent.keyCode || theEvent.which;
if(key!=13&&key!=9){//allow enter and tab
key = String.fromCharCode( key );
var regex = /[0-9]|\./;
if( !regex.test(key)) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
}
$(document).ready(function(){
$("input[type=text]").filter(".number,.NUMBER").on({
"focus":function(e){
$(e.target).data('oldValue',$(e.target).val());
},
"keypress":function(e){
e.target.oldvalue = e.target.value;
number(e);
},
"change":function(e){
var t = e.target;
var min = $(t).attr("min");
var max = $(t).attr("max");
var val = parseInt($(t).val(),10);
if( val<min || max<val)
{
alert("Error!");
$(t).val($(t).data('oldValue'));
}
}
});
});
หากอินพุตเป็นแบบไดนามิกให้ใช้สิ่งนี้:
$(document).ready(function(){
$("body").on("focus","input[type=text].number,.NUMBER",function(e){
$(e.target).data('oldValue',$(e.target).val());
});
$("body").on("keypress","input[type=text].number,.NUMBER",function(e){
e.target.oldvalue = e.target.value;
number(e);
});
$("body").on("change","input[type=text].number,.NUMBER",function(e){
var t = e.target
var min = $(t).attr("min");
var max = $(t).attr("max");
var val = parseInt($(t).val());
if( val<min || max<val)
{
alert("Error!");
$(t).val($(t).data('oldValue'));
}
});
});