首页 新闻 会员 周边

AngularJS form 验证不能触发

0
悬赏园豆:20 [待解决问题]

我为一个系统写一个JS脚本,最后我把值传给input的value,form不能成功submit,我感觉是form验证没有被触发

前台代码:

<form class="ng-pristine ng-invalid ng-invalid-required" advance-on-enter="" autocomplete="off" name="destroyForm" ng-submit="processDestroy()" novalidate="">
<div class="form-group">
<label>Ticket Number</label>
<input class="ng-isolate-scope ng-pristine ng-invalid ng-invalid-required" name="ticket" ng-model="destroyData.ticket" remote-validate="validateTicket" required="" type="text">
<span class="alert alert-error plain ng-hide" ng-show="destroyForm.ticket.$invalid &amp;&amp; destroyData.ticket.length > 0">Invalid Ticket Number</span>
</div>
<div class="form-group">
<label>Destruction Machine Tag</label>
<input class="ng-isolate-scope ng-pristine ng-invalid ng-invalid-required" autofocus="autofocus" name="bin_asset_tag" ng-model="destroyData.bin_asset_tag" remote-validate="validateBin" required="" type="text">
<span class="alert alert-error plain ng-hide" ng-show="destroyForm.bin_asset_tag.$invalid &amp;&amp; destroyData.bin_asset_tag.length > 0">Invalid Asset Tag</span>
</div>
<div class="form-group">
<label>Drive Serial Number</label>
<input class="ng-pristine ng-invalid ng-invalid-required" name="serial_id" ng-model="destroyData.serial_id" required="" type="text">
</div>
<div class="form-horizontal">
<input disabled="disabled" class="btn btn-primary btn-lg" ng-disabled="destroyForm.$invalid" type="submit">
</form>


JS脚本:

var e = document.createElement('input');
e.type = 'button';
e.value = 'Start';
e.setAttribute('id', 'dbtn');
e.setAttribute('name', 'dbtn');
e.className = 'btn btn-primary btn-lg';
e.onclick = function startdestroy() {
      var serial_text = document.getElementsByName('serial_id')[1];
      //alert(serial_id);
      serial_text.value = “12345”;
      var sbtn=document.getElementsByClassName('btn btn-primary btn-lg') [1];
      sbtn.removeAttribute("disabled");
      //serial_text.removeAttribute("required")
      document.getElementsByClassName('btn btn-primary btn-lg') [1].click();
    }
  });
};
var inputdiv = document.getElementsByClassName('form-horizontal') [1];
inputdiv.appendChild(e);

 

通过在输入框手动输入和复制粘贴可以验证,直接赋值就不能触发验证,有什么办法让验证呢?

问题补充:

简单的说,在输入框手输和复制可以触发验证,而采用JS脚本直接为其复制,则不能触发验证。

孩纸有点硬的主页 孩纸有点硬 | 初学一级 | 园豆:142
提问于:2016-07-31 21:59
< >
分享
所有回答(2)
0

我没搞懂,为嘛在angular里面,你还在用onclick,和操作dom?

幻天芒 | 园豆:37175 (高人七级) | 2016-07-31 23:31
因为我不会angular...系统是用angular的,我只能用angular去操作吗?
支持(0) 反对(0) 孩纸有点硬 | 园豆:142 (初学一级) | 2016-08-01 09:08
有什么办法去触发验证呢
支持(0) 反对(0) 孩纸有点硬 | 园豆:142 (初学一级) | 2016-08-01 09:11

@孩纸有点硬: 通过$('xxx').scope().xxx=111 来赋值。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2016-08-01 23:09
0

angularjs 值是绑定在ng-model上的   如果要赋值也是 $scope.赋值对象=值

柒喵 | 园豆:208 (菜鸟二级) | 2016-08-01 11:31
额,能具体点吗?怎么写,谢谢
支持(0) 反对(0) 孩纸有点硬 | 园豆:142 (初学一级) | 2016-08-01 12:11

@孩纸有点硬:  不需要操作dom的, 你js写的脚本是想实现什么功能的?

支持(0) 反对(0) 柒喵 | 园豆:208 (菜鸟二级) | 2016-08-01 14:43
从一个url获取数据,把数据传给name为serial_id的input标签,然后自动提交
支持(0) 反对(0) 孩纸有点硬 | 园豆:142 (初学一级) | 2016-08-01 14:49

@孩纸有点硬: 你如果使用的是angularjs的路由的话,可以在controller 中  使用用 $scope.destroyData.serial_id= $routeParams.接收的对象 

页面中  

<input class="ng-pristine ng-invalid ng-invalid-required" name="serial_id" ng-model="destroyData.serial_id" required="" type="text"> 

 

 

 

支持(0) 反对(0) 柒喵 | 园豆:208 (菜鸟二级) | 2016-08-03 21:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册