Javascript AngularJS输入类型编号不为';在键入字母时,不要更新模型

Javascript AngularJS输入类型编号不为';在键入字母时,不要更新模型,javascript,angularjs,2-way-object-databinding,Javascript,Angularjs,2 Way Object Databinding,显然,有些浏览器允许用户在数字输入字段中键入字母(例如mac上的Chrome 46.0.2490.80或Ubuntu上的Chrome 41.0.2272.89)。此外,所有浏览器都接受字符“e”,因为在某些特定条件下,它可以被视为有效数字 现在,如果用户在该字段中输入任何字母,Angular显然无法更新模型 你可以在这把小提琴中看到: 使用AngularJS的简单数据绑定 姓名: 欢迎来到AngularJS{{name} 这是预期的行为吗?通过这种方式,有时模型没有反映输入字段的值,可能

显然,有些浏览器允许用户在数字输入字段中键入字母(例如mac上的Chrome 46.0.2490.80或Ubuntu上的Chrome 41.0.2272.89)。此外,所有浏览器都接受字符“e”,因为在某些特定条件下,它可以被视为有效数字

现在,如果用户在该字段中输入任何字母,Angular显然无法更新模型

你可以在这把小提琴中看到:

使用AngularJS的简单数据绑定
姓名:

欢迎来到AngularJS{{name}
这是预期的行为吗?通过这种方式,有时模型没有反映输入字段的值,可能会导致意外错误(例如,我正在考虑字段验证)

只有当输入数据有效时,模型才会更新,这一点与预期一样有效

您可能可以使用ngmodelpoptions:{allowInvalid:true}(不适用于输入类型=number afaik)覆盖此行为

文件:

另见这个问题:

只有当输入数据有效时,模型才会更新,这一点与预期一致

您可能可以使用ngmodelpoptions:{allowInvalid:true}(不适用于输入类型=number afaik)覆盖此行为

文件:

另见这个问题:

如果您需要一个数字,那么该字段中的任何字母都会使模型值无效(当然,除非您提到的是“e”)。Angular 1.4.x使用此正则表达式确定是否允许该数字:

var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/;
如您所见,“e”或“e”在本例中有效(但其他字母无效)。JSFIDLE使用的是angular的旧版本,其中“e”字符似乎没有正确解析,因此使模型无效。这里使用Angular 1.4.7也一样,它正确解析数字(包含e或e的数字)


如果模型实际上是必填字段,您的应用程序可能会使用验证来确定该模型是否已填充。如果您真的希望在模型中允许非数值,则在输入上考虑一个不同的“类型”。

< P>如果您期望一个数字,那么该字段中的任何字母都会使模型值无效(除非当然是您所提到的E)。Angular 1.4.x使用此正则表达式确定是否允许该数字:

var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/;
如您所见,“e”或“e”在本例中有效(但其他字母无效)。JSFIDLE使用的是angular的旧版本,其中“e”字符似乎没有正确解析,因此使模型无效。这里使用Angular 1.4.7也一样,它正确解析数字(包含e或e的数字)

如果模型实际上是必填字段,您的应用程序可能会使用验证来确定该模型是否已填充。如果您真的希望在模型中允许非数值,则在输入上考虑一个不同的“类型”。