当前位置: 首页 > 面试题库 >

防止页面加载到Jquery表单上时使用无显示按钮提交

靳祺然
2023-03-14
问题内容

我有一个设置为MSDOS终端样式的聊天机器人。用户键入他们的响应,然后按Enter。我发现当我用“ display:none;”标记按钮时
它会导致页面在多个浏览器上重新加载(我的Windows
chrome浏览器无法重新加载。不知道为什么)。如何隐藏按钮,但表单和代码仍能正常运行?我宁愿不使用“ position:absolute;”
将其发送到屏幕之外。

HTML:

<div id="bot"><form>
<input id="user-response" type="text" placeholder="" autocomplete="off" autofocus />
<button id="user-submit" type="submit">Send</button>
</form></div>

JAVASCRIPT:

$('#bot').on('click', '#user-submit', function(e) {
e.preventDefault();
message = $('#user-response').val();
message = message.toLowerCase();
sendUserResponse();
getBotResponse(message);
});

我已经尝试了各种类型的return:false;、event.preventDefault();等等,但是只要我不应用display,一切都可以正常工作:none;样式的按钮。我也将其更改为输入,然后键入=“ button” / type =“ submit”,但再次显示:none; 导致在单击“
enter”时重新加载页面。我已经在页面重载onclick查询ajax等页面上阅读了大约20个不同的问题…它们似乎都没有解决这个问题。

编辑:

使用了以下两个建议来检查是否按了“Enter”键来提交表单,但是它们继续出现相同的失败模式。如果您的提交按钮为样式显示,则窗体将重新加载页面。可见显示按钮时,以下方法有效。将检查代码以查找可能导致提交和重新加载的返回值。当前:具有可见按钮的页面-适用于任何方法。显示页面:无按钮-导致在所有给定方法下重新加载。

也要提及的是,页面重新加载在Windows7的Chrome49.0.2623.87中不存在,但在所有OSX浏览器和某些Windows浏览器中均存在。

编辑2

错误:显示:无;按钮会导致页面重新加载。在OSX浏览器和某些Windows上显而易见。解决方案:切换到完整的Ajax非格式,应该解决所有问题。放在一起时将发布有效的Ajax解决方案。下面的正确答案是建议Ajax。错误已提交给Chrome开发人员,以后可能还会提交给其他浏览器。


问题答案:

我认为您正在寻找AJAX。AJAX使您可以将表单数据发送到后端PHP文件(该文件随后可以将数据插入DB中和/或从DB中获取数据)而无需重新加载页面。

该页面正在重新加载,因为您正在使用<form>。当按下提交按钮时,它将提交表格,该表格总是刷新页面。但是,如果您使用AJAX,则可以发送数据(可选地接收响应)并正常进行。

实际上,当您使用AJAX时,您甚至不需要使用<form>结构-简单的DIV就可以了。然后,您无需使用event.preventDefault()来抑制内置表单刷新。

另外,将“提交”按钮的类型从更改type="submit"type="button"

若要检测用户何时在输入字段中按Enter,然后单击“提交”按钮,请尝试以下操作:

$(function(){
    $('#user-response').keyup(function(){
        var keycode = (e.keyCode ? e.keyCode : e.which);
        if(keycode == '27'){ $('form').fadeOut();}
        if(keycode == '13'){ 
            $('#user_submit').click();
        }
    });
});


 类似资料:
  • 问题内容: 我有一个设置为MSDOS终端样式的聊天机器人。用户键入他们的响应,然后按Enter。我发现当我用“ display:none;”标记按钮时它会导致页面在多个浏览器上重新加载(我的Windows chrome浏览器无法重新加载。不知道为什么)。如何隐藏按钮,但表单和代码仍能正常运行?我宁愿不使用“ position:absolute;”将其发送到屏幕之外。 HTML: JAVASCRIP

  • 问题内容: 我浏览了所有类似的帖子,但似乎无济于事。这就是我所拥有的 HTML: JavaScript / jQuery: 我无法做的是防止在按时刷新页面。我尽力尝试了每一个组合,包括内部。我也尝试使用和相反的相同结果。我无法解决这个问题,这真是疯了。由于某些设计原因,我尽可能使用超链接。非常感谢您的帮助。 问题答案: 像这样修改函数: 正如评论所提到的,通过事件: 更新2:

  • 问题内容: 在表单中使用按钮时出现问题。我希望该按钮调用功能。它确实可以,但是刷新页面的结果令人讨厌。 我的简单代码是这样的 单击该按钮后,该函数将在页面刷新时被调用,这会重置所有我先前的请求,这会影响到当前页面,这是先前请求的结果。 我应该怎么做才能防止页面刷新? 问题答案: 让我们返回false。这将解决它。

  • 问题内容: 我浏览了所有类似的帖子,但似乎无济于事。这就是我所拥有的 HTML: JavaScript / jQuery: 我无法做的是防止在按时刷新页面。我尽力尝试了每一个组合,包括内部。我也尝试使用和相反的相同结果。我无法解决这个问题,这真是疯了。由于某些设计原因,我尽可能使用超链接。非常感谢您的帮助。 问题答案: 像这样修改函数: 正如评论所提到的,通过事件: 更新2:

  • 问题内容: 我想防止使用angular.js提交多个表单。 当用户单击表单提交按钮时,提交按钮的值/标签应更改为“正在加载..”,按钮的状态将设置为“已禁用”,并且应以正常方式触发提交事件,从而导致向服务器提交呼叫。这样,用户将看到以下效果: 立即:提交按钮的值更改为“正在加载..”并被禁用 服务器响应后:向用户显示服务器请求的结果(而服务器响应的处理无需任何干预) 我制作了这个小玩意来表达我的意

  • 问题内容: 在下一页中,使用Firefox的“删除”按钮提交表单,但“添加”按钮不提交。如何防止“删除”按钮提交表单? 问题答案: 你正在使用HTML5按钮元素。请记住,原因是此按钮具有默认的提交行为,如W3规范所述,如此处所示: W3C HTML5按钮 因此,你需要明确指定其类型: 为了覆盖默认的提交类型。我只想指出发生这种情况的原因=)