2012-01-16 56 views
2

我想利用一些jQuery的功能發送消息,如有模式對話框,但我也想包括用戶不運行JavaScript。我可以同時做javascript和PHP表單嗎?

如果我有一個jquery函數來處理對話框,但用戶沒有啓用JavaScript什麼是將它們重定向到我的PHP頁面以撰寫和發送消息的最佳方式?

我假設jQuery代碼需要最高優先級,因爲它是客戶端,但然後我包裹我的PHP代碼在標籤?

有沒有更優雅的解決方案?

+4

我認爲你很困惑服務器端和客戶端代碼。你所做的是你有一個正常的HTML表單。你有JS重寫提交功能,並做任何事情。如果JS關閉,表單將正常提交。 – 2012-01-16 19:09:14

+4

你有用戶,實際上禁用JavaScript? – jrummell 2012-01-16 19:10:07

+2

'' – 2012-01-16 19:10:33

回答

2

我想我會在這裏做的是利用按鈕的onclick事件。你可以使用javascript或jquery返回false。如果瀏覽器關閉了JavaScript,表單將被提交。

<input type="button" onclick="return btnClick()" value="submit"> 

,然後在你的JavaScript像

function btnClick(){ 
    //do ajaxy stuff 
    return cancelEvent() 
} 
function cancelEvent() 
{ 
    if (window.event) window.event.cancelBubble = true; 
    return false; 
} 
+3

避免符合DOM0事件處理程序。也請讓你'cancelEvent'功能工作。你需要調用'event.stopPropagation()',因爲'return false'在DOM事件處理程序中不做任何事情(這是一個非標準的擴展) – Raynos 2012-01-16 19:25:06

+0

它確實有效,我從我的一個工作解決方案中解脫出來。如果(window.event)window.event.cancelBubble = true,則返回false作品無處不在。在提示它不起作用之前嘗試一下。 – 2012-01-16 19:28:45

+1

在DOM3事件或DOM4中,它表示從事件監聽器返回false會調用event.stopPropagation()。這是一個非標準的擴展,可以在任何時候刪除。 – Raynos 2012-01-16 19:35:37

2

你想要做的就是一個普通的HTML表單什麼:

<form action="submit.php" method="POST" id="sendMessage"> 
    <input id="msg" name="message" type="text" /> 
    <button type="submit">Submit</button> 
</form> 

然後使用jQuery覆蓋提交功能:

$('#sendMessage').submit(function(e){ 
    e.preventDefault(); // Stops the browser from submitting the form normally 
    // Do stuff... 
}); 

S o,如果啓用了JavaScript,jQuery將處理表單提交。它沒有啓用,瀏覽器會正常發佈表單。

相關問題