0

私はjQueryにかなり慣れていないので、その方法がわかりません.プラグインを手動で編集せずに実行できるかどうか.

次のような単純な形式があるとします。

<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() プラグインでそれを行う方法はありますか? そして、おそらく、フォームの通常の使用法でもそれを行う方法はありますか?

ps: はい、わかっています。フィールドの name 属性と id 属性の両方を「contact-name」として設定できますが、同じ値を含む 2 つの属性はどのように役立ちますか?

4

3 に答える 3

2

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

Rails や PHP などの一部のサーバー側言語は、特定の同じ名前を持つ複数の要素を取り、それらをデータ構造にシリアル化します。例えば:

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

ユーザー1 Infinite Loopが最初のボックスとSuite 452 番目のボックスに入力すると、PHP と Rails はaddressパラメーターの内容として ["1 Infinite Loop", "Suite 45"] を表示します。

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

idとに同じ属性値を使用することはかなり一般的ですnameが、フォーム送信で注意する必要があるのは だけですname。jQuery Form Plugin はブラウザの動作を非常に厳密にエミュレートするため、同じことが にも当てはまりますajaxSubmit

于 2009-07-07T07:04:26.053 に答える
1

これは、フォームが HTML で機能する方法です。

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

本当に必要な場合は、すべてのフォーム要素の名前を id 値に設定するプリプロセッサ JavaScript 関数を作成できますが、それはあまりスマートではありません。

于 2009-07-07T06:46:17.963 に答える
0
var name = $("#contact-name").val();
var email = $("#contact-email").val();
$.post("page.php", { contact-name: name, contact-email: email } );

これにより、カスタム属性を使用してフォームを投稿できます。

于 2009-07-07T06:47:13.560 に答える