2011-04-06 26 views
4

我正在爲iPhone創建小型表單並在該表單上進行JavaScript驗證(由服務器驗證支持,當然這不是重點)。使用JavaScript禁用iPhone中的Go按鈕

作爲驗證的結果,我啓用/禁用動態提交按鈕。除了屏幕鍵盤上的「Go」按鈕不反映我唯一提交併且始終啓用的提交按鈕的狀態之外,此工作很棒。

有什麼辦法可以解決這個問題嗎?我能以某種方式禁用JavaScript的Go按鈕嗎?

回答

3

屏幕鍵盤不能被JavaScript編輯。如果表單未經驗證,您應該取消提交事件。

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

嗯,我可以停止形式從更優雅的方式提交,但按鈕將在那裏,並將爲用戶點擊活躍 – vava 2011-05-04 08:17:17

+0

我用這個,它運作良好。但是,「Go」按鈕在功能上處於禁用狀態,但未在樣式中禁用。你仍然可以點擊它,然後按下按鈕,但沒有任何反應。 – Alan 2014-08-07 20:54:33

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

您可以通過刪除表單元素完全隱藏Go按鈕。我的意思是保持你的輸入和選擇,但刪除<form>標籤。

您仍然可以使用jQuery提交/驗證,但Go按鈕將被替換爲Return按鈕。