具有占位符属性的Firefox data-val属性可防止用户输入

时间:2015-08-11 23:53:24

标签: html firefox asp.net-mvc-5 placeholder validation

这适用于所有其他浏览器的最新版本,但在Firefox上失败。使用Firefox时,文本框将不接受键盘输入。

@Html.EditorFor(m => m.Extension, new { htmlAttributes = new { @class = Model.DigitsOnlyClassName, @placeholder = Resources.PhoneExtension } })

<input class="phoneDigitsOnly text-box single-line" data-val="true" data-val-maxlength="The field Ext must be a string or array type with a maximum length of '10'." data-val-maxlength-max="10" id="Phone_Extension" name="Phone.Extension" placeholder="Ext" value="" type="text">

当您删除data-val-maxlength-max属性或占位符时,文本框将接受键盘输入。

我已经搜索过但无法找到有关这是Firefox错误的任何具体信息。是吗?

更新:从课程中删除phoneDigitsOnly也允许控件工作。该类有一个只允许数字的事件。

很奇怪,删除3中的1个允许输入。

1 个答案:

答案 0 :(得分:0)

解决! 想知道为什么我遇到的错误仅在Firefox中以这种方式表现出来的解释。

我替换了......

$('.phoneDigitsOnly').keypress(function (e) {
            if (String.fromCharCode(e.keyCode).match(/[^0-9]/g)) return false;
        });

$('.phoneDigitsOnly').keypress(function (e) {
            var code = e.keyCode || e.which;
            // Don't validate the input if below arrow, delete and backspace keys were pressed 
            if (code == 37 || code == 38 || code == 39 || code == 40 || code == 8 || code == 46) { // Left / Up / Right / Down Arrow, Backspace, Delete keys
                return;
            }
            if (String.fromCharCode(code).match(/[^0-9]/g)) return false;
        });

请注意需要额外的密钥代码处理。再次只需要Firefox,箭头,删除和退格所有在Chrome&amp; IE最新版本。