0

私は現在、jQueryを使用してフォーム検証を作成しており、フォローインの問題があります。

データが投稿されたときに、そのように動作する配列があるように、入力にIDを指定します。

<input type="text" id="user[name]" />
<input type="text" id="user[email]" />

これは、データがスクリプトに投稿されると、「ユーザー」アラウが利用できるようになることを意味します。$user["name"]ただし、jqueryを使用して入力を選択しようとすると、機能しませんvar name = $("#user[name]")。しかし、入力のIDが「username」の場合var name = $("#username")は機能します。

名前のIDを持つユーザーオブジェクトにアクセスしようとしているので、jqueryのCSSセレクターと関係があると思いますか?$("input[username]")ユーザー名のIDを持つ入力を選択する方法のように。

これを回避する方法についてのアイデアはありますか?そして、それはすべてのブラウザで動作しますか?

4

4 に答える 4

1

フォーム要素のid値はサーバーに渡されるものではなく、ドキュメントDOMとスクリプト言語によって内部的にのみ使用されます。name渡されるのはそれです。

フォーム要素は次のように変更する必要があります。

<input type="text" id="username" name="user[name]" />
<input type="text" id="useremail" name="user[email]" />

HTML 4仕様は、要素の適切な命名に対応しています。

IDトークンとNAMEトークンは、文字([A-Za-z])で始まる必要があり、その後に任意の数の文字、数字([0-9])、ハイフン( "-")、アンダースコア( "_")を続けることができます。 、コロン( ":")、およびピリオド( "。")。

属性で角かっこを使用するnameことは、配列形式のデータをサーバー側のスクリプト言語に渡すための一般的な手法ですが、角かっこをで使用すると、idJQueryが混乱することは間違いありません。

于 2010-01-09T21:06:07.470 に答える
0

あなたのIDがHTML仕様に従って有効ではないので、セレクターが機能しないことに完全に驚いていません:

IDトークンとNAMEトークンは、文字([A-Za-z])で始まる必要があり、その後に任意の数の文字、数字([0-9])、ハイフン( "-")、アンダースコア( "_")を続けることができます。 、コロン( ":")、およびピリオド( "。")。

PHPマニュアルには、IDではなく属性を使用してフォーム要素を配列としてサーバーに渡す正しい方法に関するチュートリアルがあります。name

<input name="MyArray[keyOne]" />
<input name="MyArray[keyTwo]" />
<input name="MyOtherArray[]" />
<input name="MyOtherArray[]" />
于 2010-01-09T21:07:41.343 に答える
0

次のいずれかを試してください。

$("[id='user[name]']")
$("#user\\[name\\]")
$("#user\\005Bname\\005D")
于 2010-01-09T21:08:15.303 に答える
0

まず第一に、name属性は投稿されるものであり、idではないことを知っています。

今問題に

jQueryでアクセス<input type="text" id="user[name]" />するには、次のようにする必要があります

var name = $("input[id='user[name]']");
于 2010-01-09T21:08:38.533 に答える