2015-08-27 80 views
1

我試圖設置ng-disabled在我下面的代碼中的'保存'按鈕時遇到一個奇怪的問題。我希望我的輸入字段是必需的,並且是一個非負數。此代碼的結構很好,但是當我刪除表ng-disabled下方的第二個表單時,它不再有效。爲什麼ng-disabled取決於這個完全不必要的額外形式,我純粹爲了臨時測試而添加了這個形式?ng禁用行爲奇怪

<div> 
    <table> 
    <tr> 
     <td><p>Limit</p></td> 
     <td><p>1,000,000</p></td> 
     <form class="form-inline" name="form"> 
     <td> 
      <div class="form-group"> 
      <input type="text" ng-pattern="/^[0-9][0-9]*$/" class="form-control" ng-if="limit.saveAllowed" ng-model="limit.user.points" 
       ng-required="true"></input> 
      </div> 
      <p ng-if="!limit.saveAllowed">{{limit.user.points}}</p> 
     </td> 
     <td ng-if="limit.saveAllowed"> 
      <div class="form-group"> 
      <button class="btn btn-success" type="submit" ng-click='limit.setLimit(limit.user.points)' ng-disabled="form.$invalid">Save</button> 
      </div> 
     </td> 
     </form> 
    </tr> 
    </table> 
    <form class="form-inline" name="form"> 
    <input type="text" ng-model="limit.user.points" 
     ng-required="true"></input> 
    </form> 
</div> 

注:我使用的是controllerAs語法,因此limit指的是我的控制器。此外,這個HTML全部駐留在自定義指令的模板中。我不知道這些額外的信息是否有用,但我很難過。

+0

你能爲這個問題創建plunkr嗎? –

+2

不確定這是否是問題,但您的表單不是嵌套在'​​'中,而是直接嵌入在不允許的''中:http://stackoverflow.com/questions/5967564/form-inside-a-table –

+0

這是問題 – SuperVeetz

回答

1

表單不能直接嵌套在<tr>內(請參閱this)。 只需用<td>(或只是將其移動到<table>之外)包裝表格,並且應該可以正常工作。