处理 iOS 虚拟键盘“上一个”、“下一个”、“Go/Enter”按钮

Posted

技术标签:

【中文标题】处理 iOS 虚拟键盘“上一个”、“下一个”、“Go/Enter”按钮【英文标题】:Handling iOS virtual keyboard “previous”, “next”, “Go/Enter” buttons 【发布时间】:2015-10-21 05:02:08 【问题描述】:

我正在使用 jquery mobile、php、phonegap 和 cordova 开发一个移动应用程序 我有一个要求,在所有表单元素(如文本框)的虚拟键盘中,应该有下一个和上一个按钮,并且对于最后一个文本框,应该显示 Done/Go/Enter 选项。 如何在不添加插件的情况下以编程方式处理这些按钮。 这是我的表格

<form id="loginForm" name="form1">
<div class="row mainpart paddingleftandright clsfieldPadding">
    <div class="col-lg-12">
        <div class="input-group1" id="email_div">
            <input type="email" id="login_form_email"
                placeholder="EMAIL ADDRESS" value="" data-clear-btn="true"
                data-mini="true" tabindex='1' class="clsPyType clsBodyTxt" autocapitalize="off" onBlur="getPasswordProtectionStatus(this.value);checkLoginEmail(this.value);">
            <span class="input-group-addon"><span class="glyphicon" style='display:none;' id="glyphicon_id1">!</span></span>
        </div>
    </div>
</div>
<div id="login_form_email_msg" class="clsPyType"></div>
<div class="row mainpart paddingleftandright clsfieldPadding2">
    <div class="col-lg-12">
        <div class="input-group1" id="password_div">
            <input type="password" id="login_form_password"
                placeholder="PASSWORD" value="" data-clear-btn="true"
                autocomplete="off" data-mini="true" tabindex='2' class="clsPyType clsBodyTxt" onBlur="checkLoginPassword(this.value);">
            <span class="input-group-addon"><span class="glyphicon" style='display:none;' id="glyphicon_id2">!</span></span>
        </div>
    </div>
</div>
<div id="login_form_password_msg" class="clsPyType"></div>
<div class="row mainpart paddingleftandright">
    <div class="col-lg-12 remember-me">
        <select name="slider" data-role="slider" id="rememberMe">
            <option value="0">No</option>
            <option value="1">Yes</option>
        </select>
        <div class="col-sm-5 clsPyTypeUprBold Clsremember">Remember Login</div>
    </div>
</div>
<div class="row mainpart paddingleftandright">
    <div class="col-lg-12">
        <!-- <a data-role="button" data-transition="flip"
                 data-direction="reverse" class="clsBtnHead2 clsBtnRed" id="login_form_submit" onClick="login_form_submit();"><div class="clsBtnTop">LOGIN</div></a> -->
        <input type="submit" tabindex='3' id="login_form_submit" class="clsBtnHead2 clsBtnRed" onfocus=" $(this).trigger('click');" value="LOGIN"/>
    </div>
</div>

如果有人有更好的想法,请分享

【问题讨论】:

【参考方案1】:

表单中的所有字段都将具有上一个/下一个按钮,其作用类似于真实键盘上的选项卡。 done/Go/enter 按钮......如果有数据要提交,它们自然会出现。我认为这归结为语义和正确构建表单。

在屏幕截图中,第一个字段被聚焦,下一个按钮可用(V 形指向右侧)并且可以通过 GO 按钮提交表单。它可以提交,因为所有设备都知道此表格是完整的,您的验证将决定数据是否完整。我在这里得到的是您将无法随意隐藏返回/执行按钮。但是,您可以使用数字键盘省略它。

“完成”消息出现在虚拟键盘上方并且不提交(除非您提交模糊,因为使用它会模糊您关注的任何字段),并且看起来像一个文本链接。

“Enter”和“Go”按钮将提交表单。因此,如果您表单中的最后一个字段是数字(大手指按钮),那么您将无法使用它进行提交,除非您提交该字段模糊的表单。

这是一个工作示例:http://codepen.io/morganfeeney/pen/ojdRMQ

我构建它是为了测试手持设备上的虚拟键盘。去你的 iPhone 上看看吧;)

仅供参考:您提供的示例代码没有结束 &lt;/form&gt; 标记。

【讨论】:

以上是关于处理 iOS 虚拟键盘“上一个”、“下一个”、“Go/Enter”按钮的主要内容,如果未能解决你的问题,请参考以下文章

IOS虚拟键盘遮挡页面底部文本框

仅由 UDLR 按钮操作的虚拟键盘的 Qt 焦点处理

iOS 键盘挡住UITextField

跨 UITableView 自定义单元格处理键盘的上一个、下一个和完成按钮

ios中,如何设置clearbutton,且保证虚拟键盘不会一直弹出来

iOS 关闭/收起虚拟键盘的若干方法