2009-07-07 5 views
0

私はjQueryにはまったく新しいです、そして、私はそれをやる方法を知らず、手動でプラグインを編集せずに行うことができます。jQuery ajaxSubmit():フィールド名の代わりにフィールドIDを参照するフォームを送信するには?

は、単にそのように形成持っていると仮定します

<form action="page.php" method="post"> 
Name: <input type="text" name="Your name" id="contact-name" value="" /> 
Email: <input type="text" name="Your email" id="contact-email" value="" /> 
</form> 

あなたは「標準的な」方法で、またはajaxSubmit()は、リクエストの値は、フィールド名のラベルを取るとの両方、それを提出し

、私は持っているでしょうpage.phpに:

$_POST['Your name']; 
$_POST['Your email']; 

代わりに、私は、フィールドのIDで送信された値にラベルを付けるのが好きでしょう:

$_POST['contact-name']; 
$_POST['contact-email']; 

jqueryとajaxsubmit()プラグインでこれを行う方法はありますか? そして、フォームの通常の使用でもそれを行う方法がありますか?

p.s:はい、私は 'contact-name'として両方のフィールドのname属性とid属性を設定できましたが、同じ値を含む2つの属性はどのように役立つのでしょうか?

答えて

2

HTML仕様によると、ブラウザはname属性を送信する必要があります。これは要素間で一意である必要はありません。

RailsやPHPなどのサーバ側言語では、複数の要素を特定の名前で取得し、データ構造にシリアル化しています。例えば:

<input type="text" name="address[]" /> 
<input type="text" name="address[]" /> 

最初のボックスと2番目のボックスでSuite 451 Infinite Loopにユーザがタイプした場合、PHPとRailsはaddressのコンテンツとして[「スイート45」、「1無限ループ」]が表示されますパラメータ。

これはすべてname属性に関連しています。一方、id属性は、ページ上の要素を一意に表すように設計されています。 #myIdを使用してCSSを使用し、document.getElementByIdを使用して生JavaScriptで参照できます。それはユニークなので、JavaScriptで見ることは非常に高速です。実際には、jQueryや他のライブラリを使用して、これらの詳細を隠すことになります。

idnameに同じ属性値を使用するのが一般的ですが、フォームの提出に注意する必要があるのはnameです。 jQueryフォームプラグインは、ブラウザの動作を非常によくエミュレートします。したがって、ajaxSubmitにも同じことが適用されます。

+0

わかりました。だから私は名前とidを等しく設定し、私は短い記述のためにtitle属性を使用します – Strae

1

フォームがHTMLで動作する方法です。

さらに、HTML要素のid属性はドキュメント内で一意でなければならないのに対し、同じ名前(ただし値は異なる)のコントロールがいくつかあるため、チェックボックスとラジオボタンではIdの機能が動作しません。

本当に欲しかったら、すべてのフォーム要素の名前をid値に設定するプリプロセッサのjavascript関数を作成することができますが、これはあまりスマートではありません。

+0

私はチェックボックスとラジオボタンについては考えていませんでしたが、あなたは一意になると思います... – Strae

0
var name = $("#contact-name").val(); 
var email = $("#contact-email").val(); 
$.post("page.php", { contact-name: name, contact-email: email }); 

これにより、カスタム属性でフォームを投稿できるようになります。

+0

はい、私は知っていますが、プラグインもファイルアップロードを許可しています。別のプラグインを作成する.. – Strae

+0

ああ。そうですか。私はあなたが一般的にjQuery AJAX呼び出しについて質問していると思っていました。プラグインのソースコードを見ると、代わりにフォーム要素の 'id'を送信するようにプラグインを変更するのが最も簡単な方法です。 – peirix

関連する問題