进入JQuery脚本我做这样的事情来检查插入到 id =“variazioneAnticipo 的输入字段中的值是否为数字:
var variazioneAnticipo = $("#variazioneAnticipo").val();
if($.isNumeric(variazioneAnticipo)) {
alert("NUMBER");
}
else {
alert("NOT A NUMBER");
}
这很好但唯一的问题是 isNumeric() JQuery函数还考虑了数字指数表示法以及其他我不想考虑的符号号。
如何在此处看到:https://api.jquery.com/jQuery.isNumeric/这些符号被视为数字:
$.isNumeric( 0xFF ); // true
$.isNumeric( "0xFF" ); // true
$.isNumeric( "8e5" ); // true (exponential notation string)
如何防止这些符号被视为数字?我能否以某种方式指定对我来说什么是数字以及什么不使用 isNumeric()函数?
或者如果值是一个数字而不考虑以前的情况,我该怎么说呢?
答案 0 :(得分:3)
pattern
input
属性
$('#num').on('keyup', function() {
var value = $(this).val();
if (/^[0-9]+(\.[0-9]+)?$/.test(value)) {
$('#message').text('Valid');
} else {
$('#message').text('Invalid');
}
});
#num:invalid {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" pattern="[0-9]+(\.[0-9]+)?" id="num" />
<div id="message"></div>
/^[0-9]+(\.[0-9]+)?$/
^
:行首[0-9]+
:匹配一个或多个0到9的数字出现(\.[0-9]+)?
:匹配一个或多个数字后跟小数点。整个组可以出现零次或一次。$
:行尾与HTML和CSS相同的代码
#valid,
#invalid {
display: none;
}
#num:invalid,
#invalid {
color: red;
}
#num:valid,
#valid {
color: green;
}
#num:invalid ~ #invalid {
display: block;
}
#num:valid + #valid {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" pattern="[0-9]+(\.[0-9]+)?" id="num" />
<div id="valid">Valid</div>
<div id="invalid">Invalid</div>
答案 1 :(得分:2)
$(function () {
$("#out").click(function () {
alert(/^[0-9]+(?:\.[0-9]+)?$/.test($("#in").val()) ? "Yes" : "No");
});
});
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<input type="text" id="in" />
<input type="submit" value="Check" id="out" />
完美适用于数字,浮点值,而不是十六进制或指数。