2010-05-16 58 views
1
被稱爲

我有一個領域一個簡單的HTML表單如下:字段無法通過JQuery的

<input type="text" name="data['User']['user_id']" id="data['User']['user_id']" value="1"> 


$(document).ready(function(){ 
$("#data['User']['user_id']").mouseover(function(){ 
alert("hello"); 
}); 

}); 

的代碼不能工作,
我認爲這可能是的名稱導致問題的輸入文本字段,
但我不知道如何更改
,因爲這是CakePHP中的命名約定。

+1

問題是,JavaScript什麼都不做? JQuery似乎無法找到您的選擇器中指定的項目? – Hober 2010-05-16 18:35:04

+1

爲什麼不讓'id'只是一個簡單的字符串? – Young 2010-05-17 01:06:03

回答

3

jQuery documentation了答案:\\

如果你希望使用任何的元字符(#;&,.+*~':"!^$[]()=>|/)作爲名稱的文本部分,則必須使用兩個反斜槓逃脫字符。例如,如果您有一個輸入爲name="names[]",則可以使用選擇器$("input[name=names\\[\\]]")

所以你的情況:$("input[name=\\[User\\]\\[user_id\\]]")

不過,請注意,我認爲HTML片段你貼是假。默認情況下,蛋糕的形式幫助創建內容是這樣的:

<input type="text" name="data[User][user_id]" id="UserUserId" value="1"> 

名稱不包含任何'和ID是駝峯格式是容易選擇。

+0

哦,你是對的,欺騙。 我在我的問題中犯了一個大錯。 它應該是name =「data [User] [user_id]」 非常感謝你的幫助。 – user327712 2010-05-18 20:16:33

0

我相信

$("#data[User][user_id]") 

告訴jQuery來尋找與

id="data[User][user_id]" 

的元素,而不是

name="data[User][user_id]" 

不知道,雖然,有人糾正我嗎?

0

問題是,JQuery對於匹配匹配文本中有括號的東西非常愚蠢。使用以下爲您的選擇:

$("[id^=data['User']['user_id']]") 

它使用^ =比較運算符「開頭」,這似乎爲我工作。

+0

說我有另一個輸入文本字段這樣命名爲 name =「data ['User'] ['username']」 您提示的舊代碼:$(「[name^= data ['User'] ['user_id ']]「) 將引發另一個問題 當我將鼠標移到第二個字段上時,警報也彈出。 – user327712 2010-05-16 18:56:36