输入类型=具有Angular的文件并不识别何时选择了文件。 REQUIRED属性保留

时间:2015-01-14 17:21:36

标签: javascript angularjs

所有

每当你选择一个输入类型为= 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>&nbsp;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,上面列出了所谓的解决方案:

http://plnkr.co/edit/3TZCMUb9XXPGP5ifHf6x?p=preview

0 个答案:

没有答案