点击回车刷新页面jQuery

Posted

技术标签:

【中文标题】点击回车刷新页面jQuery【英文标题】:Hitting enter refreshes the page jQuery 【发布时间】:2021-06-03 12:13:03 【问题描述】:

我已经编写了一些代码来使用 jQuery 创建一个待办事项列表。如果我按 Enter 键,它应该将输入提交到下面的列表中,但问题是页面会刷新,就好像它正在提交表单一样。我已经在 SO 上检查了多个线程,但我没有找到解决方案。

Stop reloading page with 'Enter Key'

Prevent users from submitting a form by hitting Enter

我已尝试添加 e.preventDefault();return: false; 这会停止刷新,但也会阻止在按 Enter 后添加到列表中。

我在 html 表单标签中尝试了以下内容:

onSubmit="return false;"

action="#"

我的 IIFE 是否有问题导致此问题?

let checklist = (function() 
  function newItem() 

    let li = $('<li></li>');
    let inputValue = $('#input').val();
    let input = $('#input');
    let deleteIcon = $('<div></div>');

    function crossOut() 
      li.toggleClass('strike');
    

    function deleteListItem() 
      li.addClass('delete');
    

    if (inputValue === '') 
      alert('You must write something!');
     else 
      $('#list').append(li);
      input.val('')
    
    
    deleteIcon.append(document.createTextNode('X'));
    li.append(deleteIcon);
    li.append(inputValue);
    
    deleteIcon.on('click', deleteListItem);
    li.on('dblclick', crossOut);

    $('#list').sortable();
  
  
  return 
    newItemf: newItem
  ;

)();

$('#button').on('click', checklist.newItemf)

$(window).on('keypress', function (e)
  if(e.which == 13) 
    checklist.newItemf;
    return false;
  
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form name="toDoList">
        <input type="text" name="ListItem" id="input">
      </form>

      <div id="button">Add</div>
      <br/>
      <ol id="list"></ol>

【问题讨论】:

这能回答你的问题吗? Stop reloading page with 'Enter Key'.The accepted answer说明需要绑定formsubmit事件。 我试过了,但除非我的语法错误,否则它不起作用。 【参考方案1】:

阻止这种情况的最简单方法是捕获 onSubmit event 并返回 false。我认为以下内容就足够了:

$('form').on('submit', function(e) 
    e.preventDefault();
    return false;
);

【讨论】:

我试过了,但它也会在按下回车时停止添加按钮功能。 如果您希望表单提交的行为与单击按钮时相同,您可以手动调用单击按钮$('#button').click() 或简单地调用单击事件调用的相同函数checklist.newItemf()在表单提交处理程序中【参考方案2】:

我找到了解决方案,但我不完全明白为什么我不需要 return false;

也许是我试图在“输入”被按下而不是阻止所有输入时提交输入。谢谢@isick,因为您的回答为我指明了正确的方向!

这是需要的代码!

$('form').on('submit', checklist.newItemf)

【讨论】:

以上是关于点击回车刷新页面jQuery的主要内容,如果未能解决你的问题,请参考以下文章

jquery实现无刷新显示页面内容

jquery怎么实现点击刷新当前页面

我有个表单 点击按钮可以提交 但是回车的话只是刷新页面 请问各位大虾 这是何故 望指点一二

jquery让一个点击事件刷新页面就自己执行一次的方法

如何在 jQuery 中强制页面刷新或重新加载?

vue+element Form键盘回车事件页面刷新解决