只允许数字、小数、负数
Only allow numbers, decimals, negative
我的代码只允许在 keypress() 的输入字段中输入数字
if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
return false;
}
我怎样才能同时允许小数和减号按键?
这是一个解决方案,但我推荐使用遮罩插件,例如:jQuery-Mask-Plugin
$("#id").keypress(function(e){
if (e.which != 46 && e.which != 45 && e.which != 46 &&
!(e.which >= 48 && e.which <= 57)) {
return false;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="id" />
$('.DecimalNumberWithNegative').keypress(function (event) {
NumberPostiveNegativeWithDecimal(event, this)
});
$('.DecimalNumberWithNegative').keyup(function (event) {
ReplaceNegative(event, this);
});
function NumberPostiveNegativeWithDecimal(evt, element) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (
(charCode != 45 || $(element).val().indexOf('-') != -1) &&
(charCode != 46 || $(element).val().indexOf('.') != -1) &&
(charCode < 48 || charCode > 57))
evt.preventDefault();
return true;
}
function ReplaceNegative(event, element) {
var $$this = $(element).val();
//alert($$this);
var charCode = (event.which) ? event.which : event.keyCode
if (charCode == 189 && $$this.indexOf('-') > 0) {
value = $$this.replace('-', '');
$(element).val(value);
event.preventDefault();
}
}
这是一个工作演示,它检查号码是否有效并且也不允许多个符号:
$("#num").on('keyup', function() {
if ($.isNumeric($(this).val())) {
console.log('Valid!');
} else {
console.log('Invalid!');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id="num" />
允许数字、小数、负数
此解决方案可防止双重 minuses 或 dots.
只需在输入class后加上数字即可。
$("input.number").on('keypress', function(e) {
var caret = e.target.selectionStart;
var nowStr = $(this).val().substr(0, caret) + String.fromCharCode(e.which) + $(this).val().substr(caret);
if (!$.isNumeric(nowStr)) e.preventDefault();
});
如果您在 table 中使用 editable 单元格,您可以使用以下按键功能
function validate(e) {
var caret = window.getSelection().getRangeAt(0).startOffset;
var data =e.target.textContent
var newData = data.substr(0, caret) + String.fromCharCode(e.which)
+data.substr(caret);
if (!$.isNumeric(newData)) {
if (newData == "." || newData == "-")
return true;
e.preventDefault();
}
}
或者您可以使用
function validate(evnt) {
var caret = window.getSelection().getRangeAt(0).startOffset;
var charC = (evnt.which) ? evnt.which : evnt.keyCode;
var data =evnt.target.textContent
if (charC == 46) {
if (data.indexOf('.') === -1) {
return true;
} else {
evnt.preventDefault();
}
}
else if (charC == 45) {
if (data.indexOf('-') === -1) {
return true;
} else if (caret >0) {
evnt.preventDefault();
} else {
evnt.preventDefault();
}
} else {
if (charC > 31 && (charC < 48 || charC > 57))
evnt.preventDefault();
}
return true;
}
我的代码只允许在 keypress() 的输入字段中输入数字
if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
return false;
}
我怎样才能同时允许小数和减号按键?
这是一个解决方案,但我推荐使用遮罩插件,例如:jQuery-Mask-Plugin
$("#id").keypress(function(e){
if (e.which != 46 && e.which != 45 && e.which != 46 &&
!(e.which >= 48 && e.which <= 57)) {
return false;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="id" />
$('.DecimalNumberWithNegative').keypress(function (event) {
NumberPostiveNegativeWithDecimal(event, this)
});
$('.DecimalNumberWithNegative').keyup(function (event) {
ReplaceNegative(event, this);
});
function NumberPostiveNegativeWithDecimal(evt, element) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (
(charCode != 45 || $(element).val().indexOf('-') != -1) &&
(charCode != 46 || $(element).val().indexOf('.') != -1) &&
(charCode < 48 || charCode > 57))
evt.preventDefault();
return true;
}
function ReplaceNegative(event, element) {
var $$this = $(element).val();
//alert($$this);
var charCode = (event.which) ? event.which : event.keyCode
if (charCode == 189 && $$this.indexOf('-') > 0) {
value = $$this.replace('-', '');
$(element).val(value);
event.preventDefault();
}
}
这是一个工作演示,它检查号码是否有效并且也不允许多个符号:
$("#num").on('keyup', function() {
if ($.isNumeric($(this).val())) {
console.log('Valid!');
} else {
console.log('Invalid!');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id="num" />
允许数字、小数、负数
此解决方案可防止双重 minuses 或 dots.
只需在输入class后加上数字即可。
$("input.number").on('keypress', function(e) {
var caret = e.target.selectionStart;
var nowStr = $(this).val().substr(0, caret) + String.fromCharCode(e.which) + $(this).val().substr(caret);
if (!$.isNumeric(nowStr)) e.preventDefault();
});
如果您在 table 中使用 editable 单元格,您可以使用以下按键功能
function validate(e) {
var caret = window.getSelection().getRangeAt(0).startOffset;
var data =e.target.textContent
var newData = data.substr(0, caret) + String.fromCharCode(e.which)
+data.substr(caret);
if (!$.isNumeric(newData)) {
if (newData == "." || newData == "-")
return true;
e.preventDefault();
}
}
或者您可以使用
function validate(evnt) {
var caret = window.getSelection().getRangeAt(0).startOffset;
var charC = (evnt.which) ? evnt.which : evnt.keyCode;
var data =evnt.target.textContent
if (charC == 46) {
if (data.indexOf('.') === -1) {
return true;
} else {
evnt.preventDefault();
}
}
else if (charC == 45) {
if (data.indexOf('-') === -1) {
return true;
} else if (caret >0) {
evnt.preventDefault();
} else {
evnt.preventDefault();
}
} else {
if (charC > 31 && (charC < 48 || charC > 57))
evnt.preventDefault();
}
return true;
}