使用JavaScript禁用iPhone上的Go按钮

4

我正在为iPhone创建一个小表单,在该表单上进行JavaScript验证(当然还有服务器验证,但这不是重点)。

由于这种验证,我可以动态启用/禁用提交按钮。这很好,除了屏幕键盘中的“Go”按钮不反映我唯一拥有的提交按钮的状态,并且始终处于启用状态。

有没有办法解决这个问题?我是否可以使用JavaScript禁用那个Go按钮?

4个回答

5
您可以通过删除表单元素来完全隐藏“Go”按钮。我的意思是保留您的输入和选择,但删除<form>标签。

您仍然可以使用jQuery提交/验证,但“Go”按钮将被“Return”按钮替换。


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 */ 

3

屏幕键盘无法通过JavaScript进行编辑。如果表单未经过验证,您应该只取消提交事件。


1

在 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>

好的,我可以以更优雅的方式停止表单提交,但是按钮仍将存在,并且用户仍可点击它。 - vava
我使用了这个并且它运行良好。然而,“Go”按钮在功能上被禁用,但在样式上没有被禁用。你仍然可以点击它,按钮会按下,但是没有任何反应。 - Alan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接