[英]Javascript limit text field to positive and negative numbers
javascript中有一種方法可以允許用戶在文本字段(輸入類型為“文本”)中僅輸入數字,但可以選擇在數字前加上減號嗎? (即只有負數和正數)
<input type='text' onkeypress='return numbersOnly(this,event,false,true);'>
function numbersOnly(Sender,evt,isFloat,isNegative) {
if(Sender.readOnly) return false;
var key = evt.which || !window.event ? evt.which : event.keyCode;
var value = Sender.value;
if((key == 46 || key == 44) && isFloat){
var selected = document.selection ? document.selection.createRange().text : "";
if(selected.length == 0 && value.indexOf(".") == -1 && value.length > 0) Sender.value += ".";
return false;
}
if(key == 45) { // minus sign '-'
if(!isNegative) return false;
if(value.indexOf('-')== -1) Sender.value = '-'+value; else Sender.value = value.substring(1);
if(Sender.onchange != null) {
if(Sender.fireEvent){
Sender.fireEvent('onchange');
} else {
var e = document.createEvent('HTMLEvents');
e.initEvent('change', false, false);
Sender.dispatchEvent(e);
}
}
var begin = Sender.value.indexOf('-') > -1 ? 1 : 0;
if(Sender.setSelectionRange){
Sender.setSelectionRange(begin,Sender.value.length);
} else {
var range = Sender.createTextRange();
range.moveStart('character',begin);
range.select();
}
return false;
}
if(key > 31 && (key < 48 || key > 57)) return false;
}
相關問題: HTML文本輸入僅允許數字輸入
您可以將偵聽器(在javascript中)綁定到onKeyUp事件(或最適合您的需求),然后檢查用戶試圖插入的內容。 然后,您可以決定是否讓他插入該字符。
注意:您還希望控制復制/粘貼事件,因為用戶可以粘貼一些文本而不是編寫文本!
用這個。 有用。
https://raw.github.com/SamWM/jQuery-Plugins/master/numeric/jquery.numeric.js
$(document).ready(function(){
$(".numeric").numeric({negative :true});
});
嘗試以下正則表達式:
/^-?\d+$/
這是我僅對正整數和負整數提出的最佳解決方案
<input type="text" onkeyup="this.value = (this.value[0] === '-') ? ('-' + this.value.replace(/[^0-9]/g, '')) : (this.value.replace(/[^0-9]/g, ''));" pattern="^-?\d+" />
您可以在這里查看它http://jsfiddle.net/4g08ofz6/
模式
pattern="^-?\d+"
只是將值粘貼或拖動時的額外驗證層,但請記住,您仍應始終在服務器站點上進行驗證
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.