Атрибуты свойств
Подскажите, пожалуйста, когда и как устанавливаются атрибуты свойств объектов (раздел 8.6.1 стандарта). Можно ли их узнать и/или изменить.
Заранее спасибо. |
object.property = 'value'; |
Я имею в виду атрибуты ReadOnly, DontEnum, DontDelete, Internal, которые описаны в стандарет EcmaScript в пункте 8.6.1.
|
Я точно не уверен, но вроде как эти атрибуты в JavaScript программно недоступны, либо вообще не реализованы.
|
Эээ, а как же все таки изменить атрибут readonly (ну или на крайняк disabled)? Делаю ячейку таблицы с изменяющимся режимом доступа: доступен для редакт-я/не доступен. (по двойному клику на самой ячейке).
ИНТУИТ пишет, что "readonly [CI] Если установлен, этот булев атрибут запрещает изменение ЭУ. Атрибут readonly определяет, может ли ЭУ быть модифицирован пользователем. Если установлен, атрибут readonly действует на элемент следующим образом: ЭУ "только для чтения" может получить фокус, но не может быть модифицирован пользователем. ЭУ "только для чтения" включён в навигацию табуляцией. ЭУ "только для чтения" может быть "действующим". Следующие ЭУ поддерживают атрибут readonly: INPUT и TEXTAREA. То, как ЭУ "только для чтения" отображаются, зависит от ПА. Примечание. Единственная возможность изменить значение атрибута readonly динамически - использование скриптов." http://www.intuit.ru/department/inte...tml/17/10.html... Но КАК? :help: Пробовал и input_obj.readonly='true'; и input_obj.setAttribute='true'; - не катит :( Может нужно потоковым изменением док-та (типа document.write или input_obj.innerHTML)? Подскажите если сможете.. Спасибо. |
Писать нада не
input_obj.readonly='true'; input_obj.setAttribute='true'; а input_obj.readOnly=true; input_obj.setAttribute('readonly','readonly'); |
Полный список:
'class': 'className', 'for': 'htmlFor', usemap: 'useMap', cellspacing: 'cellSpacing', cellpadding: 'cellPadding', colspan: 'colSpan', rowspan: 'rowSpan', valign: 'vAlign', maxlength: 'maxLength', readonly: 'readOnly', tabindex: 'tabIndex', accesskey: 'accessKey', frameborder: 'frameBorder' |
disabled только забыл...
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
B~Vladi,
это список всех атрибутов высота букв, в имени которых, разная в html и javascript. Для disabled, насколько я знаю, она одинакова. Возможно, ты имеешь в виду, что для disabled в javascript-е нужно обязательно булево значение, тогда это нужно отдельным списком, смешивать эти списки не нужно. |
Цитата:
Я думал ты приводишь список всех атрибутов и соответствующих свойств для поля, а не только те, которые различаются. |
Цитата:
Вот моя функция, работающая по двойному клику на input'e function myfoo(b) { if(b.className=='readable') { b.className='editable'; } else { b.className='readable'; b.readonly=true; } if (b.readonly!=null) { alert('Read Only!'); } //alert(b.className); } По событию (двойной клик), алерт выскакивает "Read Only!", но т.к. курсор редактирования остается там же в инпуте, содержимое по прежнему редактируется(. Хотя атрибут-на-чтение уже по идее установлен... Я думал о внедрении дополнительного эл-та с атрибутом ридонли по 2-му клику (например b.innerHTML или document.write), но первый не подходит по причине проблемы извлечения потом содержимого инпута, а второй только дописывает в теги конец..( Надоумьте пожалуста.) |
Цитата:
Цитата:
Цитата:
|
if(b.readonly!=null) Это что такое?! Писать так: if(b.readOnly) |
Цитата:
Цитата:
|
ok. исправил. все равно алерт говорит(врет) ридонли!, а поле редактируемо:
<script type="text/javascript"> function myfoo(b) { if(b.className=='readable') { b.className='editable'; b.readOnly=false; // b.disabled=0; } else { b.className='readable'; b.readOnly=true; } if (b.readOnly==true) { alert('Read Only!'); } } </script> <style> .readable { border-style:outset;} .editable { border-style:inset; } </style> </head> <body> <input id="id_1" name="ai1" ondblclick='myfoo(this);'/> попробовал с дисаблед, как учат здесь http://stepbystep.htmlbook.ru/?id=29 , теперь по двойному клику поле становится деактивированным (ура!), но теперь я уже не могу войти в режим редактирования ( function myfoo(b) { if(b.className=='readable') { b.className='editable'; b.disabled=0; } else { b.className='readable'; b.disabled=1; } </script> Я конечно понимаю, что можно это кнопкой сделать, но как то неохота делать кнопку к каждой редактируемой ячейке 10000-ячеичной таблице... Может кто знает, как делаются гриды в JS-библиотеках?? http://extjs.com/deploy/dev/examples...edit-grid.html |
Цитата:
Цитата:
|
Код работает нормально
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Документ без названия</title> </head> <script type="text/javascript"> function myfoo(b){ if(b.className=='readable'){ b.className='editable'; b.readOnly=false; }else{ b.className='readable'; b.readOnly=true; } if (b.readOnly){ alert('Read Only!'); } } </script> <style> .readable { border-style:outset; } .editable { border-style:inset; } </style> </head> <body> <form action="" method=""> <input id="id_1" name="ai1" ondblclick='myfoo(this);'/> </form> </body> </html> |
в эксплорере работает некорректно((
|
Работает.
|
угу. спс.
|
бага следующая: при переходе из режима "editable"->"readable", если не убрал курсор редактирования из ячейки, то могу продолжать редактировать :((. Если тыкаю мышкой куда-нибудь в др. место, а потом обратно на ячейку, то все ок (прикрыто).. Вот такой обломс(
|
Убрать фокус из поля перед изменением статуса.
|
Аха... бага...
Добавь b.blur(); |
B~Vladi
супер :) |
Подскажите молодому, подающему надежды!
<input type="text" name="test" id="test" value="111" size="45"> <input type="button" value="!!!" onClick="document.getElementById('test').readOnly= true;"> <input type="button" value="???" onClick="document.getElementById('test').readOnly= false;"> - Текстовое поле должно менять состояние. Работает только в IE. Это бесповоротно или как-то надо делать иначе? Да еще замучила большая буква в readOnly (думал не важно...) |
Однако не пойму логики...
Как только оформил выражение document.getElementById('test').readOnly= true; как функцию - все стало работать во всех браузерах (вообще все - и стили...) Может кто объяснит? |
('readonly','readonly')
Цитата:
Нативные эквивалент this.readonly = true; |
Часовой пояс GMT +3, время: 04:01. |