0
我有一个表单用于扫描条形码。当输入一个时,一个ng-click
函数触发并读入表单和条形码。像这样:
<form name="vm.form">
<input ng-model="vm.scannedBarcode"
required
oninvalid="this.setCustomValidity('Please enter a barcode number')"
onchange="this.setCustomValidity('')"
type="text">
<input type="submit"
ng-click="vm.addBarcode(vm.form, vm.scannedBarcode)"
value="Add">
</form>
然后,控制器:
vm.addBarcode = function(form, barcode) {
if(form.$valid){
console.log("okay");
...
// add the barcode to an array of barcodes
}
}
注意,位置表单提交后不会改变。新的条形码被压入现有条形码阵列中,然后显示在表格下方的表格中。我认为这是关键。
以上工作,但仅限于第一个条形码扫描,比如1111
。然后我扫描第二个条形码,例如2222
。现在form
被设置为pristine
和invalid
,尽管barcode
设置为2222
,因为它应该是。
简而言之,我该如何两次提交相同的表单?
谢谢!
摆脱使用本机dom有效性的方法,只使用有角度的方法。永远不要有任何理由在角度上使用'onchange','oninvalid','onclick'等。实际上应该在表单上使用'novalidate'并让角度管理这一切 – charlietfl