Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Атрибут readonly и jQuery 
:(
    Опции темы
s0lman
Дата 17.6.2009, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: нет
Всего: 29



Всем привет
Кто подскажет, в чем особенность следующей строки
Код

 $("input:text").attr('readonly','readonly');

?

В результате устанавливается атрибут
Код

readonly=""

вместо ожидаемого
Код

readonly="readonly"


Спасибо.


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
youri
Дата 17.6.2009, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 2
Всего: 16



как ты узнал, что именно такой html получается?

у тебя были проблемы из-за того, что получилась немного не такая разметка?
PM   Вверх
WIPS
Дата 17.6.2009, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

Репутация: 2
Всего: 8



Есть сайт, где все написано по твоему вопросу.
Код

$("input:text").attr('readonly', true);


youri, посмотреть кода можно Ctrl+A -> RightClick -> View Selection Source
--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
s0lman
Дата 17.6.2009, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: нет
Всего: 29



WIPS, спасибо

Цитата(WIPS @  17.6.2009,  17:25 Найти цитируемый пост)
посмотреть кода можно Ctrl+A -> RightClick -> View Selection Source 

firebug'ом удобнее ))


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
youri
Дата 18.6.2009, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 2
Всего: 16



Цитата(WIPS @  17.6.2009,  17:25 Найти цитируемый пост)
youri, посмотреть кода можно Ctrl+A -> RightClick -> View Selection Source

я не спрашивал, как можно это сделать. Я спрашивал, как s0lman это делал, потому что есть разные способы. Кроме того, в то время как "View Selection Source" показывает readonly="readonly", firebug показывает readonly="". Но в этом ничего нету плохого. В html некоторые атрибуты можно записывать в минимизированной форме. В опере, safari, chrome вообще, если в исходнике страницы указывать readonly="readonly", innerHTML возвращает readonly=""

по поводу сайта, я бы посоветовал документацию, там есть пример на эту тему. А вообще, attr('readonly', 'readonly'), removeAttr('readonly') должно по определению работать, но еще работает attr('readonly', true), removeAttr('readonly', false)
PM   Вверх
s0lman
Дата 18.6.2009, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: нет
Всего: 29



Все равно не удается выполнить поиск по атрибуту readonly
Код
Код

$("input[readonly]:text").removeAttr('readonly');

сначала выполняется, но после выполнения такого
Код

$("input:text").attr('readonly',true);

поиск не дает желаемого результата
Условия пробовал различные)

З.Ы. проблему решил костылем - добавил дополнительный атрибут и поиск веду по нему
З.З.Ы. может у кого будут предложения по задаче  smile

Это сообщение отредактировал(а) s0lman - 18.6.2009, 11:26


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
ksnk
Дата 18.6.2009, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



s0lman, Это какая-то ошибка в jQuery 
Вот так, вроде, работает
Код

$("input:text")[0].setAttribute("readonly","readonly");



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
youri
Дата 18.6.2009, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 2
Всего: 16



какая там ситуация получается... Как я говорил, jQuery ставит атрибут readOnly с помощью DOM 0. А при поиске элемента проверяется наличие свойства readonly (ведь так в селекторе указано), а потом атрибута readonly. Атрибут присутствует, если (value + "") && (value !== false). Но прикол в том, что после
Код

elem.readOnly = true;

в ff получается, что
Код

elem.getAttribute('readonly') == ''

так что я затрудняюсь сказать, где ошибка
Код

<script type="text/javascript">
$(function() {
    console.log( $('input')[0].getAttribute('readonly') );
    $('input')[0].readOnly = 'readonly';
    console.log( $('input')[0].getAttribute('readonly') );
});
</script>
<input type="text" readonly="readonly">

p.s. jQuery ведь, кроме всего прочего, использует библиотеку из Dojo (Sizzle) для поиска по selector'ам

Это сообщение отредактировал(а) youri - 18.6.2009, 17:31
PM   Вверх
ksnk
Дата 18.6.2009, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



youri, в IE jQuery работает четко и правильно, а вот в FF и Хроме - хромает smile зато таким образом, как написал я - через родной DOM'овский метод, устанавливается вполне корректно. Насколько я понял топикстартера, небходимо было придумать способ установить и снять readonly так, чтобы селектор от jQuery продолжал работать.
Код

<body>
<style>
input { width:20em;}
</style>
<script src='jquery.js'></script>

<input type="text" readonly><br><br>

<script>
var x={
   'set readonly=true':'$("input:text").attr("readonly",true);',
   'set readonly=readonly(1)':'$("input:text").attr("readonly","readonly");',
   'set readonly=readonly(*)':'$("input:text")[0].setAttribute("readonly","readonly");',
   'Clear':'$("input[readonly]:text").removeAttr("readonly");',
   'check':'alert($("input[readonly]:text").length);',
 
   'Attrib':'var x=$("input:text")[0].getAttribute("readonly");alert([typeof(x),"["+x+"]"]);'
}
for(a in x){
  document.write("<input type='button' onclick='"+x[a]+"' value='"+a+"'>"+x[a]+"<br>");
}

</script>
</body>

Вот 3 способа установить атрибут. Первый и второй - "Родные" для jQuery, третий - работающий.
Check - проверка селекторов, а attrib - попытка выяснить истину  smile () 

Это сообщение отредактировал(а) ksnk - 18.6.2009, 20:31


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
youri
Дата 18.6.2009, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 2
Всего: 16



Цитата

youri, в IE jQuery работает четко и правильно, а вот в FF и Хроме - хромает

я ж не спорю, я написал, почему в ff не работает
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1121 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.