2017-03-18 71 views
-1

我需要在页面中创建机器人做一些工作,并且需要更改年份和月份的值,并且在手动输入值时提交所有工作,但是当我使用如下所示的javascript时:改变输入值并提交angularjs

document.getElementsByName('dateeffet-annee')[0].value='2017'; 
document.getElementsByName('dateeffet-annee')[0].focus(); 
document.getElementsByName('dateeffet-mois')[0].value='12'; 
document.getElementsByName('dateeffet-mois')[0].focus(); 

这是我的网页代码:

<div class="col-xs-12 ap-show" id="tarifs" ng-click="showPanier = false" ng-show="!isLoading" ng-class="{'ap-show':!isLoading}" style=""> 
    <div class="row"> 
     <div> 
      <!-- ngIf: getNbProposition() == 0 --> 
      <div ng-if="getNbProposition() == 0" class="ng-scope"> 
       <p>Les propositions ne pourront être tarifiées qu'après modification de la date d'effet.</p> 
       <div class="col-xs-4 col-xs-offset-4"> 
        <div class="input-group ng-valid ng-valid-required ap-invalid ng-dirty" invalid="hasNotify(vm, 'dateeffet')" ng-form="" name="effetFormBis"> 
         <div class="input-group date-group ng-isolate-scope ng-valid-date ng-valid-max-date ng-valid-min-date ng-valid ng-valid-required ng-dirty" ng-form="dateeffet" ap-date-containers="" ng-model="vm.dateeffet" ng-change="saveDateEffet()" min-date="" max-date="" ng-required="behaviours['dateeffet-required']" name="dateeffet"> 
          <input maxlength="2" name="dateeffet-jour" placeholder="jj" mask="99" class="form-control left ng-pristine ng-valid" ng-model="dateVal.PartJour" ng-focus="focus.jour = true" ng-blur="focus.jour = false" type="tel"> 
          <input maxlength="2" name="dateeffet-mois" placeholder="mm" mask="99" class="form-control left ng-pristine ng-valid" ng-model="dateVal.PartMois" ng-focus="focus.mois = true" ng-blur="focus.mois = false" type="tel"> 
          <input maxlength="4" name="dateeffet-annee" placeholder="aaaa" mask="9999" class="form-control last ng-pristine ng-valid" ng-model="dateVal.PartAnnee" ng-focus="focus.annee = true" ng-blur="focus.annee = false" type="tel"> 
          <input name="compoVal" ng-model="dateVal.PartAnnee" class="ng-pristine ng-valid" type="hidden"> 
         </div> 
        </div> 
       </div> 
      </div> 
      <!-- end ngIf: getNbProposition() == 0 --> 
      <!-- ngIf: getNbProposition() > 0 --> 
     </div> 
    </div> 
</div> 

你能有助于改变值,并提交与控制台JavaScript的改变,因为如果你AR这不是我的网站

回答

0

我通过这段代码解决了这个问题

document.getElementsByName('dateeffet-annee')[0].value='2017'; 
    document.getElementsByName('dateeffet-mois')[0].value='12'; 
    var $parent = $("[name='dateeffet']"); 
    $parent.find("input").each(function(){ 
     var $this = $(this); 
     angular.element($this.get(0)).triggerHandler("blur"); 
    }); 
    angular.element($parent.get(0)).scope().saveDateEffet(); 
0

e以这种方式更新值,而不是“角度方式”(在控制器内部,使用角度jqlite),您应该在$ scope。$ apply函数内执行代码,以强制角度更新值。这样的事情应该在外面工作的角度控制器:

$scope.$apply(function() { 
    document.getElementsByName('dateeffet-annee')[0].value='2017'; 
    document.getElementsByName('dateeffet-mois')[0].value='12'; 
}); 
+0

当我在Mozilla执行该代码我得到这个消息 的ReferenceError:$范围没有定义 – Abdelhak

+0

@ Abdelhak你不能在控制台中执行这个。这是您的角度控制器中需要的代码,让角度知道您正在以“非角度”方式更改值(直接操作DOM)。我建议你在尝试实际使用框架之前遵循(少数)好的角度教程。角度的学习曲线可能很难。 –

+0

这是注意我的网站,我只需要创建机器人做一些动作总是重复,你可以帮助改变这个值从控制台 – Abdelhak