Html 停止IE11从输入类型编号中删除文本

Html 停止IE11从输入类型编号中删除文本,html,internet-explorer-11,Html,Internet Explorer 11,在Internet Explorer 11中,如果您具有以下功能: <input type="number" min="1" max="12" pattern="[0-9]*" > 当用户试图输入字母而不是数字时,浏览器只会清除输入。这种行为是不可取的,因为我希望我们的验证能够处理这种情况,而不是让浏览器自动为我处理 有人知道如何改变这种行为吗 我使用数字输入类型进行验证,并在iOS中获得正确的键盘 ,因此,您的验证方法很可能认为这是缺少内容,而不是非数值 <input

在Internet Explorer 11中,如果您具有以下功能:

<input type="number" min="1" max="12" pattern="[0-9]*" >

当用户试图输入字母而不是数字时,浏览器只会清除输入。这种行为是不可取的,因为我希望我们的验证能够处理这种情况,而不是让浏览器自动为我处理

有人知道如何改变这种行为吗

我使用数字输入类型进行验证,并在iOS中获得正确的键盘


,因此,您的验证方法很可能认为这是缺少内容,而不是非数值

<input type="number" value="aaa" />
我修改了您的JSFIDLE演示以反映以下内容:

如果您需要在
输入
元素中接受非数字数据,那么解决方案非常简单,只需将元素的
类型
更改为“text”,而不是“number”,并完全依赖您自己的JavaScript验证方法来处理验证(看起来您还是想要的)


您还可以始终使用JavaScript确定用户是否在移动设备上查看您的站点,并动态更改
类型
属性


另一种解决方案是通知用户,如果元素模糊且不存在文本(IE自动删除后),则字段必须是数字字段,但这一点最好在后面讨论。

只需使用正则表达式即可:

<input type="text" name="amount" id="amount"
    data-val="true"
    data-val-required="Amount field cannot be empty."
    data-val-regex-pattern="^[0-9+.\s]*$"
    data-val-regex="Amount field must be numeric"
    placeholder="Amount">
<span class="field-validation-valid" data-valmsg-for="amount" data-valmsg-replace="true"></span>


通过在javascript中重新编程所需的numberfield行为,并使用输入类型文本…您的输入说
input type=“number”
,但您试图向字段添加字母?是的@misterManSam这就是我们正在做的,问题是IE11在有机会验证之前删除了文本,所以我们根本没有得到验证消息。哦,你的意思是用户输入后立即输入?这是一个选择是的,我会探索!
pattern
属性对于
type=number
无效,被IE 11忽略。@hcharge-是,首先防止输入非数字字符。这将减少混乱,如果它伴随着一个简单的错误,表明只有数字被接受。此外,也可以使用灰色占位符数字-01 01 1990-微妙地表示所需的输入。也许吧。嗨,詹姆斯,非常感谢你的回答。是的,我想问题是用户不知道输入的只是数字。我们对这些字段进行了验证,因此在其他浏览器中,如果该字段失去焦点,则会出现字母错误,正如您所说的,IE不会这样做,因为它从未真正具有该值。这个问题只是通过QA测试才出现的,我怀疑用户是否会遇到这个问题。但看到IE11的行为很有趣。这不是标准验证-我假设您使用的是某种第三方JS库,它查看这些数据-*属性。同意@psynnott。添加您正在使用的第三方库的名称
<input type="text" name="amount" id="amount"
    data-val="true"
    data-val-required="Amount field cannot be empty."
    data-val-regex-pattern="^[0-9+.\s]*$"
    data-val-regex="Amount field must be numeric"
    placeholder="Amount">
<span class="field-validation-valid" data-valmsg-for="amount" data-valmsg-replace="true"></span>