我正在为iPhone创建一个小表单并在该表单上进行JavaScript验证(当然,这是由服务器验证支持的,但这不是重点)。
作为此验证的结果,我动态启用/禁用提交按钮。除了屏幕键盘上的“Go”按钮不能反映我所拥有的唯一提交按钮的状态并且始终启用时,这项工作很棒。
有什么方法可以修复吗?我可以用JavaScript以某种方式禁用Go按钮吗?
答案 0 :(得分:5)
您可以通过删除表单元素完全隐藏Go
按钮。我的意思是维护您的输入和选择,但删除<form>
标记。
您仍然可以使用jQuery提交/验证,但Go
按钮将替换为Return
按钮。
答案 1 :(得分:4)
Flavio的脚本有效,但如果Go按钮被禁用,用户可能会发现它不直观。
尝试禁用表单提交,而不是禁用提交按钮。
<form id="myform" onSubmit="return canSubmit(this);">
...
</form>
jQuery的做法是:
$('#myform').submit(canSubmit);
/* where canSubmit is a function defined as
'function canSubmit() {...}' returning true or false */
答案 2 :(得分:3)
JavaScript无法编辑屏幕键盘。如果表单未验证,您应该取消提交事件。
答案 3 :(得分:1)
在head标签内使用此javascript代码,您将禁用输入类型的go按钮:text,number,tel,email。
<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>