2012-01-16 66 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将处理表单提交。它没有启用,浏览器会正常发布表单。

相关问题