2012-01-16 11 views
2

モーダルダイアログのようなメッセージを送信するjquery関数をいくつか利用したいと思いますが、javascriptを実行していないユーザーも含めたいと思っています。javascriptとPHPフォームの両方を実行できますか?

ダイアログを処理するjquery関数がありますが、ユーザーがjavascriptを有効にしていない場合、メッセージを作成して送信するためにPHPページにリダイレクトする最良の方法はありますか?

クライアント側であるためjqueryコードの優先順位が最も高いと仮定していますが、タグでPHPコードをラップしますか?

もっと洗練されたソリューションはありますか?

+4

私はあなたがサーバーサイドとクライアントサイドのコードを混乱させると思います。あなたがしているのは、通常のHTMLフォームを持っているということです。 JSは送信機能をオーバーライドして、何でも実行します。 JSがオフの場合、フォームは正常に提出されます。 –

+4

実際にjavascriptを無効にしているユーザーがいますか? – jrummell

+2

'' –

答えて

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'関数を動作させてください。 'return false'はDOMイベントハンドラで何もしないので、' event.stopPropagation() 'を呼び出す必要があります。(非標準の拡張機能です) – Raynos

+0

うまくいきました。戻り値falseはどこでも動作しますif(window.event)window.event.cancelBubble = true does not。それがうまくいかないことを示唆する前に試してみてください。 –

+1

DOM3イベントまたはDOM4では、イベントリスナーから 'return false'が' event.stopPropagation() 'を呼び出すと言います。これはいつでも削除できる非標準の拡張機能です。 – Raynos

2

のようなものは、通常のHTMLフォームを作成している。その後、

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

し、Submit機能を無効にするためのjQueryを使用します。

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

S o、JavaScriptが有効な場合、jQueryはフォームの送信を処理します。有効になっていないと、ブラウザはフォームを通常どおりPOSTします。

関連する問題