处理 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 上看看吧;)
仅供参考:您提供的示例代码没有结束 </form>
标记。
【讨论】:
以上是关于处理 iOS 虚拟键盘“上一个”、“下一个”、“Go/Enter”按钮的主要内容,如果未能解决你的问题,请参考以下文章
跨 UITableView 自定义单元格处理键盘的上一个、下一个和完成按钮