我只想检查输入值是否为数字和/或两个数字之间是否有连字符。逗号应该用点(1,23 - > 1.23)代替,空格应该删除。
允许值即:。
1
2
1-2
34-45
不允许:
-2
1-
-
any letters
我的尝试:
$('form').submit(function( event ) {
$('input').each(function(index, element) {
$(element).val($(element).val().replace(",", ".").replace(" ", "")); // replace comma, delete spaces
if (!$.isNumeric($(element).val())) {
alert("error");
event.preventDefault();
}
// else submit
});
我认为isNumeric
是错误的方式,因为'12 -5'应该是一个有效的值......
答案 0 :(得分:2)
首先要做的是用,
替换.
并删除空格。这可以通过以下方式完成:
var input = "1 2 3. 4 - 56,78"; input.replace(/ /g,"").replace(/,/g,".")
然后你必须申请正则表达式:
/^\d+(\.\d+|\d*)(-?\d+(\.\d+|\d*)|\d*)$/
小提琴:http://jsfiddle.net/y5ACh/1/
正则表达式解释:http://www.regexr.com/397j6
忘记提及 - 我认为像.2-31
这样的字符串无效($.isNumeric(".2")
返回true,因此我们无法在{{1}之前和之后使用$.isNumeric
}})
要使浮动无效,您需要放弃-
组:http://jsfiddle.net/y5ACh/2/
要使整数无效,您需要删除(\.\d+|\d*)
组:http://jsfiddle.net/y5ACh/3/
答案 1 :(得分:1)
$('input').each(function(index, element) {
$(element).val($(element).val().replace(",", ".").replace(" ", "")); // replace comma, delete spacesis).val());
//alert($(this).val());
if (!$.isNumeric($(element).val())) {
alert("error");
event.preventDefault();
}
});
演示: