使用JavaScript禁用iPhone中的Go按钮

使用JavaScript禁用iPhone中的Go按钮,iphone,Iphone,我正在为iPhone创建一个小表单,并在该表单上执行JavaScript验证(当然是由服务器验证支持的,但这不是重点) 作为此验证的结果,我动态启用/禁用提交按钮。这项工作很好,除了屏幕键盘上的“Go”按钮不能反映我仅有的提交按钮的状态,并且总是处于启用状态 有没有办法解决这个问题?我可以用JavaScript禁用Go按钮吗?屏幕上的键盘不能用JavaScript编辑。如果表单未验证,您应该取消提交事件。在head标记中使用此javascript代码,您将禁用输入类型的go按钮:文本、数字、电话

我正在为iPhone创建一个小表单,并在该表单上执行JavaScript验证(当然是由服务器验证支持的,但这不是重点)

作为此验证的结果,我动态启用/禁用提交按钮。这项工作很好,除了屏幕键盘上的“Go”按钮不能反映我仅有的提交按钮的状态,并且总是处于启用状态


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

屏幕上的键盘不能用JavaScript编辑。如果表单未验证,您应该取消提交事件。

在head标记中使用此javascript代码,您将禁用输入类型的go按钮:文本、数字、电话、电子邮件

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

功能停止键(evt){
var evt=(evt)?evt:((事件)?事件:空);
变量节点=(evt.target)?evt.target:
((evt.srcmelement)?evt.srcmelement: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;

弗拉维奥的脚本可以工作,但如果禁用Go按钮,用户可能会发现它不直观

请尝试禁用表单提交,而不是禁用“提交”按钮

<form id="myform" onSubmit="return canSubmit(this);">
...
</form>

通过删除表单元素,可以完全隐藏
Go
按钮。我的意思是维护您的输入和选择,但删除
标记


您仍然可以使用jQuery提交/验证,但是
Go
按钮将被
Return
按钮所取代。

好吧,我可以用更优雅的方式阻止表单提交,但是按钮将在那里,并且将被激活,以便用户单击。使用此按钮,效果良好。但是,“Go”按钮在功能上是禁用的,但在样式上不是禁用的。你仍然可以点击它,按下按钮,但什么也没发生。
$('#myform').submit(canSubmit); 
/* where canSubmit is a function defined as 
'function canSubmit() {...}' returning true or false */