【发布时间】:2016-07-01 17:16:22
【问题描述】:
我有一个 MSDOS 终端风格的聊天机器人。用户键入他们的响应,然后按回车键。我发现当我用“display:none;”标记按钮时它会导致页面在多个浏览器上重新加载(我的 windows chrome 浏览器没有重新加载。不知道为什么)。如何隐藏按钮但表单和代码正常运行?我宁愿不使用“位置:绝对;”将其发送到屏幕外。
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);
});
我尝试过各种类型的返回:false;、event.preventDefault(); 等等,但只要我不应用 display: none; 一切正常。按钮的样式。我也将其更改为 input 和 type="button"/type="submit" 但再次显示:无;导致页面在点击“输入”时重新加载。我已经阅读了关于页面重新加载 onclick 查询 ajax 等的大约 20 个不同的问题......似乎没有一个能够解决这个问题。
编辑:
使用下面的两个建议来检查按键“Enter”以提交表单,但它们继续相同的失败模式。如果您的提交按钮样式为 display: none; 则表单会重新加载页面当按钮可见时,以下方法有效。将检查可能导致提交和重新加载的返回值的代码。 现在: 带有可见按钮的页面 - 适用于任何方法。 带有显示的页面:无按钮 - 导致在所有给定方法下重新加载。
还想提一下,Windows 7 的 Chrome 49.0.2623.87 上不存在页面重新加载,但在所有 OS X 浏览器和某些 Windows 浏览器上都存在。
编辑 2
错误:显示:无;按钮导致页面重新加载。在 OS X 浏览器和某些 Windows 上明显。解决方案:切换到完整的 Ajax 非表单,应该可以解决任何问题。放在一起时将发布有效的 Ajax 解决方案。下面的正确答案是建议 Ajax。提交给 Chrome Dev 的 bug,以后可能会提交给其他浏览器的 debs。
【问题讨论】:
-
你要使用回车吗?
-
隐藏时是否提交?
-
是的,我希望它在隐藏时提交,只需使用 enter 即可。考虑使用终端或命令提示符。没有提交按钮,只需按 Enter。我正在设计与此类似的东西,但它只是一个 javascript 页面。我让它与 position: absolute;顶部:-9999 像素;但我不想保留它,因为以后可能会出现样式问题。
标签: javascript jquery html ajax reload