验证输入类型="数字"
validate input type="number"
我试着做一些编程:我有这个订单表单与不同的输入字段(名称,amountOfProductA, amountOfProductB, amountOfProduct…),我提交这个表单,经过一些验证,与jquery脚本。
- 我计划重用代码,产品字段的数量可能会不时变化。
- 在验证中,我确保至少填写了一个(type="number")产品输入字段。
- 如果用户在一个产品输入字段中输入了一个数字,而在另一个产品输入字段中错误地输入了一个字符(或一个数字和一个字符),则表单提交后该字段为空。
- 因为错误填写的字段提交空,我无法验证这个
你能给我一个提示如何验证这个吗?我应该只使用type="text"输入字段吗?(如何检查是否至少填写了一个产品字段?)
这是我的代码:
jQuery(function ($) {
$('#bttn-submit').click(function () {
$('input').css('background', '#fff'); // reset BGcolor
var formOk = true;
var allProdFields = $('input[type=number]') // Selection of all Product('number') fields
var numberOfProdFields = allProdFields.length; // How many ('number') fields are there?
// How many product fields are empty?
var prodFieldsEmpty = 0;
for (i = 0; i < numberOfProdFields; i++) {
if( $(allProdFields[i]).val() == '' || $(allProdFields[i]).val() == 0){
prodFieldsEmpty++;
}
}
// Is there at least one product field filled?
if(prodFieldsEmpty == numberOfProdFields){
var formOk = false;
alert('Form not OK');
allProdFields.css('background', '#f30302');
}
// Is the name field filled?
if( $('#pesoonNaam').val() == '') {
$('#pesoonNaam').css('background', '#f30302');
var formOk = false;
}
if( formOk == true ) {
document.actieForm.submit();
}
})
})
下面的代码将不允许用户在您的字段中输入数字字符。因为type="number"是html5,并不适用于所有浏览器。
$(document).on('keydown', '.numeric-input', function(event) {
var dot_split = $(this).val().split('.');
if ($.inArray(event.keyCode,[46,8,9,27,13]) !== -1 || (event.keyCode == 65 && event.ctrlKey === true) || (event.keyCode >= 35 && event.keyCode <= 39) && dot_split.length <= 2) {
// let it happen, don't do anything
return;
}else{
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
event.preventDefault();
}
}
})
然后您可以使用。each检查是否有任何字段为空。
prodFieldsEmpty = 0;
$('.numeric-input').each(function(){
if($(this).val() != ""){
prodFieldsEmpty++;
}
})
我希望这对你有帮助!
您可以尝试这样做:
function checkInputs(){
result = false;
$('input[type="number"]').each(function(){
if($(this).val() != '' && isNumeric($(this).val())) result = true;
})
return result;
}
乌利希期刊指南:小提琴
你不应该将验证附加到提交按钮上,因为用户不按它就可以提交表单,而应该将验证附加到表单的提交处理程序上:
jQuery(function ($) {
$('#formID').submit(
...
jQuery有一个each迭代方法,所以:
$('input[type=number]').each( function(index) {
/* do validation */
});
在每个中,函数的this被设置为当前元素,所以你可以这样做:
if (this.value == 0) {
prodFieldsEmpty++;
}
表单控件的值总是一个字符串,所以测试this.value == 0
将返回true,如果值是'0'
或''
(空字符串)。如果不喜欢使用类型强制转换,那么使用:
if (this.value === '0' || this.value === '') {
如果你想检查值是否为整数,那么这里有任意数量的答案,最简单的可能是接受的答案这里:
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
注意,这将允许所有类型的数字,例如2.34e3。如果你只想允许正整数,你可以试试:
function isPositiveInt(n) {
return /^'d+$/.test(n); // or return !/'D/.test(n)
}
同样,有很多方法可以达到这个目的。
如果您只想检查至少有一个通过,而不是先计算字段的数量然后再检查通过的数量,请设置一个标志:
var passNumeric = false;
$('input[type=number]').each( function(index) {
if (isNumber(this.value)) {
passNumeric = true;
} else {
// do something with fails?
}
});
你可以使用else分支来处理失败(或者什么都不做)。
相关文章:
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 测试索引值是否等于某个数字的倍数
- 将数字转换为一定数量的硬币
- 铬:“;未捕获的语法错误:意外的标记:"
- 键入最后一位数字后自动提交
- 如何在javascript中迭代数字列表
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- Javascript逻辑运算符和字符串/数字
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 如何在javascript中获得与特定数字相等的随机数
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 如果元素's的ID以数字开头
- 递增一个数字而不去掉前导零
- javascript或css:如何隐藏后面跟着句点前缀的任何数字"1.文本”"2.文本“"
- 如何删除“"使用jQuery从十进制数字中提取
- "最大长度“;在输入类型=“0”的情况下不工作;数字“;在html文本框中
- 为什么javascript将typeof显示为"字符串“;当它是一个数字时
- 在输入3个数字后,自动插入“-"并将限制设置为9个字符
- 能够创建一个以字符串为键的映射,但当引用该键时;意外的数字错误"
- 为什么"typeof+''"返回'数字'