如何为 Element UI 单选组的更改设置 preventDefault
How to make preventDefault for change on Element UI radio group
我正在使用元素 UI 单选按钮组,我想在触发更改事件时使用 preventDefault()
:
<el-radio-group @change="changeHandler" v-model="radio1">
<el-radio-button label="New York"></el-radio-button>
<el-radio-button label="Washington"></el-radio-button>
<el-radio-button label="Los Angeles"></el-radio-button>
<el-radio-button label="Chicago"></el-radio-button>
</el-radio-group>
脚本:
methods: {
changeHandler(value, e) {
// e is undefined
// here should be preventDefault
}
}
我尝试设置第二个参数来改变功能,但它是未定义的。
您的方法中的参数有误。使用 @change 事件处理程序有两种方法:
一个
定义不带参数的更改处理程序,例如
<el-radio-group @change="changeHandler" v-model="radio1" ></el-radio-group>
changeHandler(e) {
// e will be the Event object
console.log(e)
}
B
定义带参数的更改处理程序,放入 $event 以仍然包含事件对象
<el-radio-group @change="changeHandler($event, 'string')" v-model="radio1" ></el-radio-group>
changeHandler(e, value) {
// e will be the Event object
console.log(e);
// value will be 'string'
console.log(value);
}
元素 UI 的工作方式略有不同。 @change
只是 returns 选择的值,没有别的。我们需要使用 native
来访问 Event
对象。但是 @change.native
将不起作用,因为更改已经发生(如果你想真正阻止更改)。作为旁注,我会改用 disabled
属性(如 documentation 中所示)。在我看来,对于用户体验来说,用户不能选择单选按钮是很奇怪的,但把它放在一边......如果你想阻止选择,请改用 @click.native
:
@click.native="changeHandler"
那么您可以访问 Event
对象:
changeHandler(e) {
console.log(e.target.value)
if(e.target.value == "Washington") {
e.preventDefault();
}
}
我正在使用元素 UI 单选按钮组,我想在触发更改事件时使用 preventDefault()
:
<el-radio-group @change="changeHandler" v-model="radio1">
<el-radio-button label="New York"></el-radio-button>
<el-radio-button label="Washington"></el-radio-button>
<el-radio-button label="Los Angeles"></el-radio-button>
<el-radio-button label="Chicago"></el-radio-button>
</el-radio-group>
脚本:
methods: {
changeHandler(value, e) {
// e is undefined
// here should be preventDefault
}
}
我尝试设置第二个参数来改变功能,但它是未定义的。
您的方法中的参数有误。使用 @change 事件处理程序有两种方法:
一个
定义不带参数的更改处理程序,例如
<el-radio-group @change="changeHandler" v-model="radio1" ></el-radio-group>
changeHandler(e) {
// e will be the Event object
console.log(e)
}
B
定义带参数的更改处理程序,放入 $event 以仍然包含事件对象
<el-radio-group @change="changeHandler($event, 'string')" v-model="radio1" ></el-radio-group>
changeHandler(e, value) {
// e will be the Event object
console.log(e);
// value will be 'string'
console.log(value);
}
元素 UI 的工作方式略有不同。 @change
只是 returns 选择的值,没有别的。我们需要使用 native
来访问 Event
对象。但是 @change.native
将不起作用,因为更改已经发生(如果你想真正阻止更改)。作为旁注,我会改用 disabled
属性(如 documentation 中所示)。在我看来,对于用户体验来说,用户不能选择单选按钮是很奇怪的,但把它放在一边......如果你想阻止选择,请改用 @click.native
:
@click.native="changeHandler"
那么您可以访问 Event
对象:
changeHandler(e) {
console.log(e.target.value)
if(e.target.value == "Washington") {
e.preventDefault();
}
}