我喜欢输入最多3个字符。在Firefox中一切正常我只能在输入中写入3个数字 - 但在safari中你可以在里面写下很多数字。
您可以使用以下方法在两个浏览器中对其进行测试:http://flowplayer.org/tools/demos/validator/custom-validators.htm
现在我用验证插件实现了它 - 但只是为了兴趣,我想知道为什么这不起作用?
修改
有了它的工作
<input class="required" id="field" type="text" maxlength="3" pattern="([0-9]|[0-9]|[0-9])" name="cvv"/>
答案 0 :(得分:31)
我用以下方式完成了它:
<input class="required" id="field" type="text" maxlength="3" pattern="([0-9]|[0-9]|[0-9])" name="cvv"/>
然后在JavaScript中我阻止了这些字母:
$("#myField").keyup(function() {
$("#myField").val(this.value.match(/[0-9]*/));
});
答案 1 :(得分:13)
您可以尝试使用type =“text”和oninput,如下所示。这只会是数字。
<input type="text" maxlength="3" oninput="this.value=this.value.replace(/[^0-9]/g,'');" id="myId"/>
答案 2 :(得分:4)
Safari浏览器基本上不支持 Max 和 Min 属性。我看不出语法上有任何缺陷。您使用的是Safari 1.3版吗?或者低于那个?因为safari 1.3 +支持 maxlength 属性。
答案 3 :(得分:1)
我使用了与@Jules答案非常相似的东西,除了他不允许使用shift + home这样的键。由于我们正在验证数字,我刚才在keyup函数中使用了isNaN。
$("#myField").keyup(function() {
var e = $("#myField");
if(isNaN(e.val())){
e.val(e.val().match(/[0-9]*/));
}
});
使用...
<input id="#myField" inputmode="numeric" maxlength="3" pattern="([0-9]{3})" type="text" />
答案 4 :(得分:0)
这是一个更简单的解决方案。对我而言,它起作用了
<input type="number" id="cvv">
$("#cvv").on("keypress", function(evt) {
var keycode = evt.charCode || evt.keyCode;
if (keycode == 46 || this.value.length==3) {
return false;
}
});
JS块会阻止“。”(点),所以一个人不能进入浮点数。我们将输入类型保持为数字,因此它只是数字作为输入。如果值长度为3则返回false,因此输入长度也受限制。
答案 5 :(得分:0)
可以限制使用onKeyDown长度
<input type="number" onKeyDown="if(this.value.length==10 && event.keyCode!=8) return false;">
快乐编码:)
答案 6 :(得分:0)
在输入类型为“ number”的情况下,不能使用maxlength和minlength函数
相反,可以使用regexp解决此问题
(?=。* [0-9])-必须仅包含数字
{10,10} -最小长度和最大长度必须为10。您可以更改这些值
<input type="number" pattern="(?=.*[0-9]).{10,10}" />
使用
pattern="(?=.*[0-9]).{10,10}"
答案 7 :(得分:-1)
https://jsfiddle.net/zxqy609v/8/
function fixMaxlength(inputNumber) {
var maxlength = $(inputNumber).attr("maxlength");
$(inputNumber).keyup(function (evt) {
this.value = this.value.substring(0, maxlength);
this.value = this.value.replace(/\D/g, '');
});
}