蔡繁荣
蔡繁荣
  • 发布:2015-12-23 20:22
  • 更新:2018-12-11 15:21
  • 阅读:12966

【分享】是时候为button按钮添加submit属性了

分类:MUI

始终为button按钮添加type属性

若button按钮没有type属性,浏览器默认按照type=submit逻辑处理,这样若将没有type的button放在form表单中,点击按钮就会执行form表单提交,页面就会刷新,用户体验极差。

这是官方文档中的一段文字,来自 http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/122
之前一直没有去怀疑过,所以我们写的代码是这样的:

document.getElementById("J_submit").addEventListener('tap', login, false);  

document.querySelector("input").addEventListener('keydown', function(){  
    if(event.keyCode == 13){  
        // 收回弹出的软键盘  
        document.activeElement.blur();  

        login();  
    }  
}, false);  

function login(){  
    // 收回弹出的软键盘  
    document.activeElement.blur();  
   ...   
}

界面是这样的:

甚至官方造了一个 mui.enterfocus.js,来绑定input的enter事件。
可是,那并不十全十美,第三方输入法的软键盘,按return有时候是不起作用的,撒逼了吧:)

其实,你真的可以为type加submit,来改进那糟糕的用户体验,而且,代码更简单,是的!

<form action="">  
    <input type="text" name="username">  
    <button type="submit" class="mui-btn mui-btn-block">保 存</button>  
</form>
// 绑定form表单提交事件  
document.querySelector('form').addEventListener('submit', function(e){  
    e.preventDefault(); // 阻止默认事件  

    login();  
});

唯一要求是你需要把input和button放到action=""的form表单中。
然后,你就拥有一个Go的软键盘了,且在任意输入框中按回车均可响应。就像下面这样:


enjoy:)

你以为你只有Go?你错了,其实你也有了Search。

8 关注 分享
BoredApe DCDDD 温柔如斯 Trust 寄生熊 ccfto amourz i***@163.com

要回复文章请先登录注册

小明子

小明子

为何我监听keydown事件,event.keyCode 的值永远都是0 ?????????
2018-12-11 15:21
1***@qq.com

1***@qq.com

如果用户名填了,密码没填,点击submit会刷新页面,这样刚填写的用户名就被刷没了。好像不合理吧
2018-11-12 08:22
6***@qq.com

6***@qq.com

看楼主这么嚣张,问一个稍微刺激点的。有“发送”按钮吗?
2016-12-29 15:04
6***@qq.com

6***@qq.com

回复 云钦 :
同问啊
2016-12-29 15:04
蔡繁荣

蔡繁荣 (作者)

回复 水灵退散 :
尴尬了。。。
2016-12-21 17:29
蔡繁荣

蔡繁荣 (作者)

回复 云钦 :
尴尬了。。。
2016-12-21 17:29
水灵退散

水灵退散

有“下一步”按钮吗
2016-11-10 16:34
云钦

云钦

看楼主这么嚣张,问一个稍微刺激点的。有“发送”按钮吗?
2016-11-08 16:49
ccfto

ccfto

不错攒个~
2016-09-10 11:45
qixi

qixi

mark
2016-07-29 10:04