2010-01-09 80 views
0

即時通訊目前正在寫的jQuery某種形式的驗證和具有跟隨着問題..jQuery的選擇問題

我給IDS我輸入這樣的方式,當數據張貼,我有一個數組一起工作,像這樣..

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

這意味着,當數據被貼到我的劇本,我就會有一個可用的「用戶」阿勞這樣我就可以做這樣的事情$user["name"]然而,當我嘗試做選擇與jquery輸入.. var name = $("#user[name]")它不會工作。但是,如果我只是將輸入的ID作爲「用戶名」,那麼var name = $("#username")將起作用。

我假設它與jQuery中的CSS選擇器,因爲它試圖訪問具有ID名稱的用戶對象?就像$("input[username]")將選擇帶有用戶名的輸入一樣。

有關我如何解決此問題的任何想法?它會在所有瀏覽器中工作嗎?

+0

這是怎麼回事使用id =「用戶[名]」?你是否希望id字面上是字符串「user [name]」還是你想要比這更復雜的東西? – 2010-01-09 21:06:42

+0

當輸入傳遞給腳本時,id =「user [name]」會生成一個很好的數組。 – cast01 2010-01-09 21:08:35

+0

使用name =「user [name]」和id =「user_name」或sthg生成的不同。我認爲[]不可用作ID值。進一步的CSS在選擇器中使用[]進行屬性過濾,所以它的錯誤也是 – ZeissS 2010-01-09 21:16:23

回答

1

idid表單元素的值不是傳遞給服務器的值,它僅在文檔DOM和腳本語言內部使用。這是通過name

你的表單元素需要進行修改,以這樣的事:

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

HTML 4 specification地址元素的正確命名:

ID和名稱標記必須以 字母開頭([ (「 - 」),下劃線 (「_」),冒號(「:」),以及可能由 跟隨 的任何數目的字母,數字 ([0-9]),連字符(「 - 」和期間 (「。」)。

name屬性使用方括號是一個常用技術以陣列形式的服務器端腳本語言來傳遞數據,但在一個id使用它們肯定會混淆JQuery的。

+0

啊,多數民衆贊成它,謝謝! – cast01 2010-01-09 21:09:11

0

我不能完全驚訝的是,選擇不工作,因爲你的ID根據HTML specification無效:

ID和名稱標記必須以 字母開頭([A-ZA ([ - ]),下劃線 (「_」),冒號(「:」)以及句點 (可能與 之間有任何數量的字母,數字 ([0-9]),連字符( 「」)。

PHP手冊對正確的方法來pass form elements as an array到服務器的教程,使用name屬性,而不是ID:

<input name="MyArray[keyOne]" /> 
<input name="MyArray[keyTwo]" /> 
<input name="MyOtherArray[]" /> 
<input name="MyOtherArray[]" /> 
0

嘗試其中之一:

$("[id='user[name]']") 
$("#user\\[name\\]") 
$("#user\\005Bname\\005D") 
0

首先知道name屬性是發佈內容而不是id。

現在的問題

與jQuery訪問<input type="text" id="user[name]" />你需要做這樣的

var name = $("input[id='user[name]']");