javascript中有一种方法可以允许用户在文本字段(输入类型=“文本”)中只输入数字,但可以选择在它们前面加上减号?(即只有负数和正数)
问问题
4507 次
5 回答
2
<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 文本输入只允许数字输入
于 2012-11-08T13:48:43.923 回答
1
您可以将侦听器(即在 javascript 中)绑定到 onKeyUp 事件(或最适合您需要的事件)并检查用户尝试插入的内容。然后你可以决定是否让他插入那个字符。
注意:您还需要控制复制/粘贴事件,因为用户可以粘贴一些文本而不是编写它!
于 2012-11-08T13:29:43.400 回答
1
用这个。有用。
https://raw.github.com/SamWM/jQuery-Plugins/master/numeric/jquery.numeric.js
$(document).ready(function(){
$(".numeric").numeric({negative :true});
});
于 2012-11-08T14:04:56.930 回答
0
尝试以下正则表达式:
/^-?\d+$/
于 2012-11-08T13:30:17.667 回答
0
这是我仅针对正整数和负整数提出的最佳解决方案
<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+"
只是在粘贴或拖入值时的额外验证层,但请记住,您仍应始终在服务器站点上进行验证
于 2015-06-13T16:32:46.443 回答