【问题标题】:How to make enter click a button如何使输入单击按钮
【发布时间】:2018-01-13 15:35:23
【问题描述】:

我的表单中有一个按钮,可以简单地取消隐藏 div,其中包含表单的提交按钮。我正在使用脚本

我希望用户在按下回车时(在文本输入字段内)只需单击按钮而不提交表单。目前,当按下回车键时,我可以看到在提交表单之前单击按钮一瞬间。如何使某个输入区域可以单击 enter 并单击按钮,但另一个文本区域按 enter 提交最终表单。

我知道我可以使用这个脚本,但是它会阻止 enter 键处理提交表单输入。

window.addEventListener('keypress', function (e) {
if (e.keyCode === 13) {
    e.preventDefault();
    feedTheList();
}
});

这是我希望用户能够按下回车键以单击下面显示的按钮的输入。

<label for="userAccountName">username</label><br>
        <input class="textField" type="text" name="username" 
id="userAccountName" maxlength="64" tabindex="1" value=""><br>&nbsp;<br>
        <label for="userPassword">Password</label><br>
        <input class="textField" type="password" name="password"
id="userPassword" autocomplete="off" maxlength="64" tabindex="2"><br>

这是显示隐藏 div 的按钮输入(我希望在上面的输入中输入回车键来单击下面的这个按钮。

<input class="btn_green_white_innerfade btn_medium" type="button" 
name="submit" id="SteamLogin" value="Sign in" width="104" height="25" 
border="0" tabindex="5" onclick="showDiv()">

这是隐藏的div输入,我要这个输入上的回车键来提交表单

<input name="authcode" class="twofactorauthcode_entry_input 
authcode_placeholder" id="twofactorcode_entry" type="text" 
placeholder="enter your code here" autocomplete="off"/>

所有这些输入都在以下表格中

<form action="/loginaction.php" method="post" name="submit" id='submit'>

最后是showDiv()函数

function showDiv() {
document.getElementById('SteamLogin').style.display = "none";
document.getElementById('loadingGif').style.display = "block";
setTimeout(function() {
document.getElementById('loadingGif').style.display = "none";
var username = document.getElementById("userAccountName").value;
document.getElementById("login_twofactorauth_message_entercode_accountname")
.innerText = username
document.getElementById('showme').style.display = "block";
document.getElementById('unhideme').style.display = "block";
},2000);

【问题讨论】:

  • html 会有所帮助,您的解释不是很清楚。您是否有多个输入框,并且希望 enter 函数仅在最后一个输入框提交表单?这是你要求的吗?
  • 试着把'return false;' .
  • 是的@almostabeginner,这正是我想要的,我希望输入键在最后一个输入框中提交表单,但是在前面的输入框中,单击按钮。我现在添加html。

标签: javascript jquery html css


【解决方案1】:

您可以将事件侦听器添加到各个输入 - #twofactorcode_entry 输入将在按下输入时提交表单,而.textField 输入将单击按钮。

const inputs = document.querySelectorAll('.textField');
const button = document.getElementById('SteamLogin');
const form = document.getElementById('form');
const twofactor = document.getElementById('twofactorcode_entry');
for (var i = 0; i < inputs.length; i++) {
  inputs[i].addEventListener('keypress', e => {
    if (e.key === 'Enter') {
      e.preventDefault();
      button.click();
    }
  });
}
button.addEventListener('click', e => {
  // submit the form instead of showing the hidden input if the input has text
  // if (twofactor.value.length) form.submit();
  showDiv();
});
twofactor.addEventListener('keypress', e => {
  if (e.key === 'Enter') {
    e.preventDefault();
    form.submit();
    alert('submitted form');
  }
});
function showDiv() {
  twofactor.classList.remove('hidden');
}
.hidden {
  display:none;
}
<form id="form">
  <label for="userAccountName">username</label><br>
  <input class="textField" type="text" name="username" 
  id="userAccountName" maxlength="64" tabindex="1" value=""><br>&nbsp;<br>

  <label for="userPassword">Password</label><br>
  <input class="textField" type="password" name="password" 
  id="userPassword" autocomplete="off" maxlength="64" tabindex="2"><br>
  <!-- removed name="submit" so form.submit() works -->
  <input class="btn_green_white_innerfade btn_medium" type="button" id="SteamLogin"       value="Sign in" width="104" height="25" border="0" tabindex="5"><br>

  <input name="authcode" class="twofactorauthcode_entry_input 
  authcode_placeholder hidden" id="twofactorcode_entry" type="text" 
  placeholder="enter your code here" autocomplete="off"/>
</form>

【讨论】:

  • 您能否更改上面的代码以匹配我在上面发布的html?会有很大帮助
  • 非常感谢,我有一个愚蠢的问题,我将包含事件监听器的代码放在哪里?
  • 事件监听器可以添加到任何地方,前提是 HTML 元素已经存在。将它们与您的showDiv 放在同一级别应该没问题。
  • 那么我需要在脚本标签中使用它们吗?我还注意到您在 class="twofactorauthcode_entry_input authcode_placeholder" 的末尾添加了 hidden ,您能解释一下原因吗?我的隐藏 div 工作正常,我不确定这是否会改变任何东西
  • 表单提交了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
  • 2020-03-02
  • 1970-01-01
  • 2015-01-21
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多