如果选中复选框,则绑定文本框值

时间:2016-10-24 13:34:59

标签: javascript angularjs ng-repeat

如何根据条件将文本框值传递给控制器​​。 如果选中复选框然后将文本框与对象值绑定并传递给控制器​​,则将其留空并将用户输入传递给控制器​​..我正在做什么不起作用。如果选中复选框,我的代码会出现问题。

$scope.Product = [
        {"ProductID":12,"LNumber":"hrx",weght:"2"},
        {"ProductID":13,"LNumber":"pty",weght:"1"}
    ]

<div>
<div>
  <input type="checkbox" data-ng-model="Copyknotes" />
  <span >Copy notes from</span>
</div>

<table data-ng-repeat="Item in Product track by $index">                                          
   <tr >
     <td>                                              
        <input type="radio" name="groupName_{{Item.ProductID}}"  data-ng-model ="Item.isSelected"  />
     </td>
     <td data-ng-if="Copyknotes == true">
       <input type="text" data-ng-model="Item.LNumber">
      </td>
      <td data-ng-if="Copyknotes == false" id="hi">
      <input type="text" data-ng-model="Item.LNumber=""">
       </td>
       </tr>
</table>
</div>

4 个答案:

答案 0 :(得分:2)

只需使用

  

数据-NG-INIT = “”

而不是

data-ng-model="Item.LNumber=""" 

使用

data-ng-model="Item.LNumber"


<table data-ng-repeat="Item in Product track by $index">                                          
   <tr >
     <td>                                              
        <input type="radio" name="groupName_{{Item.ProductID}}"  data-ng-model ="Item.isSelected"  />
     </td>
     <td data-ng-if="Copyknotes == true">
       <input type="text" data-ng-model="Item.LNumber">
      </td>
      <td data-ng-if="Copyknotes == false" id="hi">
      <input type="text" data-ng-model="Item.LNumber" data-ng-init="">
       </td>
       </tr>
</table>

答案 1 :(得分:1)

使用scope.function

<input type="checkbox" data-ng-model="Copyknotes" ng-change="changeValue(Copyknotes)" />

//Code should be inside Angular js controller
$scope.changeValue = function(Copyknotes){
   if(Copyknotes)
   {
     //Manipulate text box value here
     $scope.Item.LNumber = 'whatever';
   }
}

答案 2 :(得分:1)

这是一个例子: https://plnkr.co/edit/3Vtl6roWfL1ZqaR2nEvf

<td data-ng-if="Copyknotes == false">
    <input type="text" data-ng-model="Item.NNumber" ng-init="Item.NNumber = ''">
</td>

表达式错误 - data-ng-model =&#34; Item.LNumber =&#34;&#34;&#34; - 如果您想分配新值,你可以使用Item.LNumber =&#34;&#39;&#39;&#34; (双引号内的两个单引号)以避免干扰标记属性&#34;&#34;符号。我已经做了一个如何做到的实例。不知道您的控制器是否需要原始输入值,因此新值(取消选中复选框时)将保存为NNumber。如果需要,您可以自由地将它们更改为LNumber。此外,当输入呈现到视图中时,ng-init指令用于启动对象的NNumber参数。 您还应该定义Copyknotes进行比较。或者写下你的条件,如ng-if =&#34; Copyknotes&#34;,ng-if =&#34;!copyknotes&#34;。

答案 3 :(得分:0)

<input type="checkbox" data-ng-model="Copyknotes" ng-change="changeValue(Copyknotes)" />

首先删除data-ng-model并使用以下内容:

      //Code should be inside Angular js controller
        var oninput = null;
        $scope.changeValue = function(Copyknotes){
           if(Copyknotes)
           { 
             var oninput = document.getElementById("textbox").onchange =function(){
       $scope.item.LNumber = this.value;
           }
             //Manipulate text box value here

           }else{
             $scope.Item.LNumber = '';
             oninput = null 
           }
        }