input单选框在iphone6手机系统ios10选择bug

34 篇文章 0 订阅

bug描述

input单选框在iphone6手机系统ios10选择bug。
手机在选择的时候竟然可以同时选择多个。代码如下

<label class="label" v-for="(item, index) in values"
            :key="index">
    <input class="input-radio" :value="item.sex"
          :checked="sex === item.sex"
          @input="modifySex(item.sex)" type="radio">{{item.name}}
</label>

input事件

经调查,原来是input事件的问题,mdn上是这么定义的

当一个 <input>, <select>, 或 元素的 value 被修改时,会触发 input 事件。对于 type=checkbox 或 type=radio 的 input 元素,每当用户切换控件(通过触摸、鼠标或键盘)时(HTML5规范),input 事件都应该触发。然而,历史事实并非如此。请检查兼容性,或使用 change 事件代替这些类型的元素。

我这里是一个input元素,在切换选择的时候其实修改的是他的checked属性,他的value按道理会改变,但是没有触发input事件,用change事件代理即可。

修改之后代码

<label class="label" v-for="(item, index) in values"
            :key="index">
   <input class="input-radio" :value="item.sex"
        :checked="sex === item.sex"
       @change="modifySex(item.sex)" type="radio">{{item.name}}
</label>

change事件

change 事件被<input>, <select>, 和<textarea> 元素触发, 当用户提交对元素值的更改时。与 input 事件不同,change 事件不一定会对元素值的每次更改触发。

事件触发取决于表单元素的类型(type)和用户对标签的操作:

  • 当元素被:checked时(通过点击或者使用键盘): 和 ;
  • 当用户完成提交动作时(例如:点击了 中的一个选项,从 标签选择了一个日期,通过标签上传了一个文件,等);
  • 当标签的值被修改并且失焦后,但并未进行提交(例如:对 或者的值进行编辑后。)。

总结

以后注意使用选择类input元素使用change事件较为合理。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值