javascript - 如何以角度解决模糊和同时提交事件
问题描述
我的页面中有文本框,我可以输入 9 位数字。Onblur我正在验证输入的数字是否有效,如果服务返回失败,它将清除带有红色边框的文本框并且表单将无效。OnBlur和Submit之间发生的事件冲突。提交服务将仅调用有效的表单,否则将显示烤面包机,如输入必填字段。
如果文本字段集中并直接单击提交按钮,则两个事件同时调用并且它正在清除数字字段OnBlur以及正在调用的服务。
请你能帮我解决这个冲突。
文件.html
<form class="contact-form" #create="ngForm">
<div class="controls">
<input NumberOnly="true" type="text" id="num" [ngClass]="{'red-border-class': ((showErrorFlag == true && numberField.errors) || (showErrorFlag == true && numberField.errors && (numberField.dirty || numberField.touched)))}"
[disabled]="disableRotaDetailFields" [(ngModel)]="number"
class="floatLabel" name="ownership" required #numberField="ngModel" (blur)="validatenumber(number)" [maxLength]="einLength">
<label for="ein">number<sup>*</sup></label>
</div>
<button (click)="SaveData(create)">Save</button>
</form>
文件.ts
public validatenumber(number) {
let reqObj = {
"ownership": number
}
this.calloutService.validateOwnerEin(reqObj)
.pipe(takeUntil(this.unsubscribe))
.subscribe((data) => {
}, (err) => {
if (err.status == 404) {
this.number = "";
}
this.toastr.error(err.overriddenMessage);
})
}
SaveData(){
if (!formFlag.valid ) {
this.showErrorFlag = true;
this.toastr.error('Please fill all the mandatory fields');
}else {
this.calloutService.createData(this.data)
.pipe(takeUntil(this.unsubscribe))
.subscribe(data => {
this.showSpinnerFlag = false;
let response = data;
if (data) {
this.toastr.success("Rota created successfully.");
} else {
this.toastr.error("Could not save.");
}
}, err => {
this.showSpinnerFlag = false;
this.toastr.error(err.overriddenMessage);
})
}
}
解决方案
推荐阅读
- nativescript - 试图用 nativescript 加速
- java - 如何从 url 下载 https 文件
- mongodb - 如何在mongodb中用java编写$substr($substr(a,1,8),1,6)
- python - Python TypeError:UMat()缺少必需的参数“范围”(位置2)
- r - 格式化考试结果以在 R 中执行 t 检验
- postgresql - 如何检查 postgresql 会话计数?
- druid - 我们可以在 Druid 中更改维度后摄取的数据类型吗
- amazon-web-services - 监控 ELB 并检查它是否在 2 周内有流量
- graphql - 我是否错误地设置了架构?
- react-native - 反应本机相机返回缩略图