在测试了一些东西之后,这是我的建议
它使用数量类处理多个字段
它处理支持的非法输入
通过使用类存储所有字段的 defaultValue 来初始化
用.index()处理怪异
也在IE <10中工作
在Windows上的Safari 5.1中进行了
测试 - 它对is(":invalid")有反应,但在IE8中无效
var inputQuantity = [];
$(function() {
$(".quantity").each(function(i) {
inputQuantity[i]=this.defaultValue;
$(this).data("idx",i); // save this field's index to access later
});
$(".quantity").on("keyup", function (e) {
var $field = $(this),
val=this.value,
$thisIndex=parseInt($field.data("idx"),10); // retrieve the index
// NOTE :invalid pseudo selector is not valid in IE8 so MUST be last
if (this.validity && this.validity.badInput || isNaN(val) || $field.is(":invalid") ) {
this.value = inputQuantity[$thisIndex];
return;
}
if (val.length > Number($field.attr("maxlength"))) {
val=val.slice(0, 5);
$field.val(val);
}
inputQuantity[$thisIndex]=val;
});
});