所有
每当你选择一个输入类型为= file的文件时......见下文,然后是plunker链接:
<form name="myForm">
<label>Enter your name:</label>
<input type="text"
name="myName"
ng-model="name"
ng-minlength="5"
ng-maxlength="20"
required />
<br>
<input type="file"
name="myFile"
ng-model="myFile"
required />
<pre>myForm.myName.$error = {{ myForm.$error | json }}</pre>
<div ng-messages="myForm.myFile.$error" style="color:maroon;">
<div ng-message="required">You need to select a file</div>
</div>
<div ng-messages="myForm.myName.$error" style="color:maroon">
<div ng-message="required">You did not enter a field</div>
<div ng-message="minlength">Your field is too short</div>
<div ng-message="maxlength">Your field is too long</div>
</div>
</form>
这是我的Plunker:http://plnkr.co/edit/K5LgAXCHLKl4yQ3m6zAs?p=preview
使用Angular,并且必需的属性不会消失,Angular仍然将该字段视为必需且未填充。
请帮助......我在这里缺少什么?
更新:是的,之前已经问过这个问题,但我遇到的是:
当我在&#34;复制&#34;中使用vald-file指令进行测试时你发布的问题,当我选择一个文件&#34; FIRST&#34;时间。但是,当我选择一个&#34;不同的&#34;类型的文件,或相同类型的另一个文件,如另一个RTF,该指令永远不会被激活!意思是,表单仍然无效,输入字段不清除,指令在LIMBO !!!
我必须每次都刷新页面,然后重新开始。这非常令人沮丧,因为这&#34;假设&#34;解决方案不适用于现实世界的测试。
所以,因此,这不是重复,也不能解决我的问题。注意:当我使用CAPS时,我不会大喊大叫。这是EMPHASIS让您注意这个副本无效的事实。
????为什么每次指令都不会触发,即使我想再次选择另一个文件或同一个文件&#34;。是的,我是QA测试专家,我将测试用户可以做和将要做的每一件可能的事情,并打破代码。
更新:2 -
果然,我去了plunker的例子,它没有工作。
我试过的例子是:
<div ng-form="myForm">
<input id="userUpload" ng-model="filename" valid-file name="userUpload" required type="file" **accept=".rtf"** />
<button ng-disabled="myForm.$invalid" type="submit" class="btn btn-primary"><i class="icon-white icon-ok"></i> Ok</button>
<p>
Input is valid: {{myForm.userUpload.$valid}}
<br>Selected file: {{filename}}
</p>
</div>
注意accept =&#34; .rtf&#34;我也尝试过接受=&#34; application / rtf&#34;当我选择一个非RTF的文件时,我得到&#34;有效的文件接受&#34;。真的?
为什么?
这是选择的结果:
输入有效:true 选定文件:C:\ fakepath \ Quick Start.odt
那么,请向我解释一下,当我插入一个INVALID文件时,这个VALID-FILE指令是如何工作的,嗯?
这是我用于测试的PLUNKER,上面列出了所谓的解决方案: