zoukankan      html  css  js  c++  java
  • 小谢第13问:输入框绑定回车enter事件自动刷新页面

    今天给input输入框绑定了按enter搜索事件,结果发现按enter键后会自动刷新页面 

    $("input[name='projectName']").keyup(function(){
         if(event.keyCode == 13){
              reloadGrid();
         }
    });

    当我删除掉了写的keyup方法之后一样出现了回车自动刷新整个界面的情况

    <input type="text" class="form-control" id="projectName" name="projectName" placeholder="请输入项目名称"/>

    甚至当我删除掉了id name属性一样会有自动刷新的情况,然后就推断出不是绑定了事件。

    然后又想到可不可能是有人写过哪个元素的第几个子元素之类的,我在这个input下面加入了一个新的input。

    <input type="text" class="form-control" placeholder="请输入项目名称"/>
    <input type="text" class="form-control" placeholder="wingzing"/>

    发现加入了新的input之后,不会出现自动刷新整个页面的情况了,立刻想到是不是这个form表单的原因。
    原因:在一个form表单中,若只有一个input,按回车键表单会自动提交,但是当表单中存在多个input时,按回车键不会执行任何操作,这是form表单的一个特性。

    解决方案
    1、直接去除掉form表单,当然这是最简单粗暴的方法。

    2、如果一个input会自动提交,那么比较容易想到的是再加一个input。值得注意的是 这里的input不能设置type为hidden,这样一样是不生效的,form一样会认为只有一个input。需要设置成 <input type="text" class="form-control" style="display:none"> 。

    3、给input加上回车事件直接return false。在input加上οnkeydοwn="if(event.keyCode==13){return false;} 。

    4、直接阻止form表单的提交,在form表单加入οnsubmit="return false;"。 

  • 相关阅读:
    DDD(Domain Driven Design) 架构设计
    兴哥:美团下一个十年,要让新一批管理者成长起来
    Java设计模式-Builder构造者模式
    社会需要转型变革,自己更需要转型变革-屡败屡战
    Guava 源码分析之Cache的实现原理
    缓存算法(FIFO 、LRU、LFU三种算法的区别)
    Guava---缓存之LRU算法
    Boost.Asio 网络编程([译]Boost.Asio基本原理)
    浅谈 Boost.Asio 的多线程模型
    boost.asio系列——io_service
  • 原文地址:https://www.cnblogs.com/xieoxie3000question/p/13037279.html
Copyright © 2011-2022 走看看