为什么<input type =“number”maxlength =“3”/>在Safari中不起作用?

时间:2012-02-20 12:34:32

标签: html5 safari maxlength

我喜欢输入最多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"/>

回答:How can I prevent letters inside a text element?

8 个答案:

答案 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, '');
  });
}