2011-11-08 54 views
0

編輯 - 剛剛意識到這已不再是新iOS的問題。我沒有更新我的手機,但這對我的iPad工作正常,所以我假設如果我更新,它會正常工作。謝謝。當iphone按鈕被按下時,jquery不會提交

這個問題已被問了幾次,但接受的答案是不適合我。我希望有人可以發現一些愚蠢的錯誤,而不是回來「只使用輸入類型=提交」。

我想在登錄表單上做ajax驗證,所以登錄表單沒有提交按鈕,而是一個輸入類型=「按鈕」,當點擊時調用javascript。然而,當使用iphone時,點擊「GO」按鈕會對錶單進行文字提交(它發佈到同一頁面並將變量放入queryline中)。

實際上,點擊(觸摸)按鈕的確能正常工作。只有使用GO按鈕會使它變得混亂。

這裏是我的表單代碼:

<form name="loginform" id="loginform"> 
<table> 
<tr><td>Username:</td><td><input type="text" id="username" name="username" /></td></tr> 
<tr><td>Password:</td><td><input type="password" id="password" name="password" /></td></tr> 
<tr><td></td><td align="right"><button type="button" id="login">Login</button></td></tr> 
</table> 
</form> 

,這裏是我的javascript:

<script src="http://code.jquery.com/jquery-1.5.js"></script> 
<script language="javascript"> 
$(document).ready(function(){ 
$(window).load(function(){ 
    $("#login").click(function() { 
     checkanswers(); 
    }); 
    $("#username, #password").keyup(function(event){ 
     if(event.keyCode==13){ 
      checkanswers(); 
     } 
    }); 
    $("#loginform").submit(function() { 
     checkanswers(); 
    }); 
}); 
}); 
</script> 

任何幫助表示讚賞!

+0

無需爲$(窗口).load據我可以告訴;您的代碼不會依賴任何異步加載的資源來完全呈現和解釋。 –

+0

我的印象是,如果它與用戶輸入(如鍵入或點擊)有關,那麼這些更好地在window.load部分中提供。這不準確嗎? –

+0

不,該元素只需要在文檔模型中。 $(window).load可以工作,但你不需要文檔就緒功能。選擇一個,但我認爲文檔準備工作會更好。對不起,我沒有回答你的GO問題,順便說一下。不熟悉iOS的「GO」如何工作。 –

回答

0

你可以有一個提交按鈕,並在提交按鈕,你可以做到這一點的onclick事件:

onClick="validate();return false;" 

然後在驗證函數返回true如果驗證成功。

0

將動作添加到表單可能工作或嘗試將<input type="submit" />添加到表單中。

0

試試這個:

$("html").off("keypress").on("keypress", function (e) { 
    var which = e.which, 
    keyCode = e.keyCode; 
    if (((which && which === 13) || (keyCode && keyCode === 13))) { 
     e.preventDefault(); 
      //Submit your stuff here. 
    } 
});