我正在为iPhone创建一个小表单,在该表单上进行JavaScript验证(当然还有服务器验证,但这不是重点)。
由于这种验证,我可以动态启用/禁用提交按钮。这很好,除了屏幕键盘中的“Go”按钮不反映我唯一拥有的提交按钮的状态,并且始终处于启用状态。
有没有办法解决这个问题?我是否可以使用JavaScript禁用那个Go按钮?
我正在为iPhone创建一个小表单,在该表单上进行JavaScript验证(当然还有服务器验证,但这不是重点)。
由于这种验证,我可以动态启用/禁用提交按钮。这很好,除了屏幕键盘中的“Go”按钮不反映我唯一拥有的提交按钮的状态,并且始终处于启用状态。
有没有办法解决这个问题?我是否可以使用JavaScript禁用那个Go按钮?
<form>
标签。
您仍然可以使用jQuery提交/验证,但“Go”按钮将被“Return”按钮替换。
Flavio的脚本可以运行,但如果禁用“Go”按钮,用户可能会觉得不直观。
与其禁用提交按钮,不如尝试禁用表单提交。
<form id="myform" onSubmit="return canSubmit(this);">
...
</form>
$('#myform').submit(canSubmit);
/* where canSubmit is a function defined as
'function canSubmit() {...}' returning true or false */
屏幕键盘无法通过JavaScript进行编辑。如果表单未经过验证,您应该只取消提交事件。
在 head 标签内使用此 JavaScript 代码,您将禁用输入类型为文本、数字、电话和电子邮件的“前往”按钮。
<script language="javascript" type="text/javascript">
<!--disable enter key / go button iphone-->
function stopRKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target :
((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
if ((evt.keyCode == 13) && (node.type=="email")) {return false;}
if ((evt.keyCode == 13) && (node.type=="tel")) {return false;}
if ((evt.keyCode == 13) && (node.type=="number")) {return false;}
}
document.onkeypress = stopRKey;
</script>