【问题标题】:Submit form with enter key/hide submit button使用输入键/隐藏提交按钮提交表单
【发布时间】:2012-04-13 19:35:31
【问题描述】:

我正在制作一个带有单个输入字段的小型 jquerymobile 页面来进行数据库搜索。输入是由条形码阅读器完成的,该阅读器最后按 Enter。我想隐藏提交按钮并使用回车键提交表单。

我尝试在其他线程中读取一些代码片段,但无济于事。说到 javascript,我是个笨蛋。

<script type="text/javascript" language="JavaScript">
    $(document).ready(function() {
        $('#submit').hide();
    });
$('.noEnterSubmit').keypress(function(e){
    if ( e.which == 13 ) 
    $('form#search').submit();
    e.preventDefault();
    return false;
});
</script>

最重要的是,我有一个按钮,按下时会聚焦在输入字段上(因为在 iOS 设备上,你不能强制聚焦 onload)

<form action="#CGI.SCRIPNAME#" method="post" name="search">
<label for="season_pass_id">Season Pass ID</label>
<input class="noEnterSubmit" type="password" name="season_pass_id">
<input id="submit" type="submit" name="submit" value="submit" >
<input type="button" name="mybutton" value="Scan New" OnClick="document.search.season_pass_id.focus();">
</form>

最后我想隐藏输入字段和提交按钮,只有“扫描新”按钮

【问题讨论】:

  • 是否可以检测到换行符?当它被检测到时,您可以启动提交功能

标签: jquery


【解决方案1】:

尝试将您的按键代码移动到 document.ready 处理程序中。我怀疑在附加事件时没有加载 dom 元素。

$(document).ready(function() {
    $('#submit').hide();
    $('.noEnterSubmit').keypress(function(e){
       e.preventDefault(); 
       if ( e.which == 13 ) 
        $('form#search').submit();    
    });
});

【讨论】:

  • 我找到了这个thread 并使用了$('#submit_btn').parents('.ui-btn').hide();。它成功隐藏了提交按钮,但在第一次提交表单时,页面重新加载并再次显示提交按钮。在第二次提交表单时,它给了我我的结果和提交按钮。好奇怪
  • 我最终使用了一个 ajax post 方法来保持我对输入字段的关注。不过,我仍然希望看到这个问题的解决方案。