删除内容后,为什么type =“number”的输入值仍为“NaN”?

时间:2016-02-18 17:45:46

标签: html angular

非常简单的问题但是对于input type='number'字段的范围太过困惑。 实际上,在表单验证过程中,表单上发现了错误。

<input type="number" placeholder="Demo Number Field" class="form-control" [(ngModel)]="demoNumber">
{{demoNumber}} 

<input type="text" placeholder="Demo Text Field" class="form-control" [(ngModel)]="demoText">
{{demoText}}

当我第一次加载页面时,这些输入字段的值为null但是每当我填充这些字段一次然后删除这两个字段中的所有内容时,Textfield的值为{{ 1}}但null的值仍然是numberfield而不是NAN。为什么会这样?因此,即使数字字段为空(删除内容后),null也有效。我该如何解决这个问题?

还有一件事 - form为什么会接受numberfield之类的字符,而不是e之类的所有字符?

这是我用于演示目的的plnkr

Plunker code

PS: - 有没有办法限制用户在号码字段中不允许d,f,r或其他内容?

1 个答案:

答案 0 :(得分:2)

编辑:: Chrome接受 <div ng-controller="Ctrl"> <select ng-options="item as item.id for item in items" ng-model="selected" ng-change="dispThis(selected)" ></select> {{output}} <div> ,firefox也接受 var app = angular.module('app', []); function Ctrl($scope) { $scope.items = [{ label: 'Portugal', id: '351' }, { label: 'Spain', id: '34' }]; $scope.dispThis = function(c){ console.log(c); $scope.output = "Country: "+c.label+" & Ph.code "+ c.id }; } 。因为e可以以1.1e + 10的形式存在。

但是,如果e格式为e等无效格式,则Firefox不允许e。如果Firefox的格式为e or 1e,则Firefox允许{。}}。

原始回答: 编辑并使文本框为空后,文本字段范围设置为空字符串,而不是空。

同样,number字段的范围设置为空字符串。当你尝试渲染它时,你会得到NaN。

对于你的第二个问题,我在firefox中试过并且它不接受任何字符,如e,f,r等。它们以红色显示。