Поля в CakePHP не могут быть переданы JQuery - PullRequest
1 голос
/ 16 мая 2010

У меня есть простая форма HTMl с одним полем следующим образом:

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

Ответы [ 3 ]

3 голосов
/ 17 мая 2010

Документация jQuery содержит ответ:

Если вы хотите использовать любой из метасимволов (#;&,.+*~':"!^$[]()=>|/) в качестве буквальной части имени, вы должны экранировать символ двумя обратными слешами: \\. Например, если у вас есть вход с name="names[]", вы можете использовать селектор $("input[name=names\\[\\]]").

Итак, в вашем случае: $("input[name=\\[User\\]\\[user_id\\]]")

Обратите внимание, что я думаю, что HTML-фрагмент, который вы разместили, является поддельным. По умолчанию помощник формы Cake создает такие элементы:

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

Имя не содержит ', а идентификатор верблюжий, для удобства выбора.

0 голосов
/ 16 мая 2010

Проблема в том, что JQuery довольно тупо сопоставляет вещи, которые заключены в соответствующий текст. Используйте следующее как ваш селектор:

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

Он использует оператор сравнения ^ = для «начинается с», что, похоже, работает для меня.

0 голосов
/ 16 мая 2010

Я верю, что

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

говорит jQuery искать элемент с

id="data[User][user_id]"

, а не

name="data[User][user_id]"

Не уверен, однако, кто-то меня поправляет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...