javascript - Ionic 3 - 手动触发模糊事件
问题描述
我想知道是否有手动触发ion-input
元素上的模糊事件?
最好的方法是使用 ionic-native 方法,但任何基于 javascript 的技巧都可以。
我的配置:
Ionic:
ionic (Ionic CLI) : 4.0.1 (/Users/rguerin/.nvm/versions/node/v6.10.1/lib/node_modules/ionic)
Ionic Framework : ionic-angular 3.1.1
@ionic/app-scripts : 1.3.7
System:
NodeJS : v6.10.1 (/Users/rguerin/.nvm/versions/node/v6.10.1/bin/node)
npm : 3.10.10
OS : macOS High Sierra
我的 html 文件:
<div>
<ion-input (click)="openModal(fieldName)" [placeholder]="placeholder" #searchInput>
</ion-input>
</div>
我的组件文件:
export class MyClass implements OnInit {
@ViewChild('searchInput') searchInput: any;
foo(): void {
this.searchInput.blur();
}
}
this.searchInput.blur()
触发以下错误:
TypeError:this.searchInput.setBlur 不是函数。(在 'this.searchInput.setBlur()' 中,'this.searchInput.setBlur' 未定义)
解决方案
以编程方式模糊元素的最直接方法是首先通过@ViewChild
然后调用该元素来获取该.setBlur()
元素。就像是:
export class HomePage {
@ViewChild('myInput') myInput;
onBlurClicked() {
this.myInput.setBlur();
}
}
在您的模板中,<ion-input #myInput></ion-input>
为您的输入执行类似操作,并制作一个带有点击事件回调的按钮到onBlurClicked
. 我在这里放了一个有效的 stackblitz 示例: https ://stackblitz.com/edit/ionic-blank-3-9-2-owhgpf
编辑:由于这似乎不适用于您的 ionic 版本,您可以尝试直接模糊原生元素,例如:
export class HomePage {
@ViewChild('myInput', { read: ElementRef }) myInput: ElementRef;
onBlurClicked() {
// Call the vanilla js .blur() method on the native element.
this.myInput.nativeElement.blur();
}
}
推荐阅读
- python - OpenCV, cv2.approxPolyDP() 在闭合轮廓上绘制双线
- bash - Makefile 目标输出作为 shell 脚本的输入参数
- google-maps - Maps JavaScript API 错误消息“仅用于开发目的”
- javascript - 我需要在单击和鼠标输入时更改类的样式
- javascript - 尝试将 CSV 发布到 Rapidminer WebServices
- python - sklearn random forests overwriting each other
- android - 在 ScrollView 上放置 Android 横幅广告
- html - 是否有一种仅 html + css 的方式来跨多个网格同步动态网格列宽?
- react-native - 从服务器加载反应本机包(尝试将其托管在 aws S3 上)用于 Android
- java - 将 sql 参数传递给 jdbcTemplate.query 时,我得到一个带有对象 args 的 SQLException