2010-05-16 2 views
1

Я получил простую форму HTML с одного поля следующим образом:Поля в CakePHP не может быть передан 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

+1

Почему бы не сделать 'id' простой строкой? – Young

ответ

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"> 

Имя не содержит ' и идентификатор camelCased быть легко выбрать.

+0

О да, вы правы, обманывайте. Я сделал большую ошибку в моем вопросе. Должно быть name = "data [Пользователь] [user_id]" Большое вам спасибо за помощь. – user327712

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

Смежные вопросы