[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Input как изменить Readonly & Disabled
KUZNEC
собственно сабж.
Как изменить параметры Desabled иили ReadOnly у элементов формы через ява скрипт?

Я в явескриптах плохо шарю поэтому всё что смог сделать, так это вот:
HTML
<script LANGUAGE="JavaScript">
function set_enabled(input_name)
{
document.getElementById('1').setAttribute('readonly', 'true');

}
</SCRIPT>
<form name='orders_editor' action='5t' method='POST'>
<input type='text' id='1' name='card_id' value='1' readonly='false'>
</form>


Заранее примного благодарен за помощь



Спустя 1 минута, 12 секунд (24.02.2009 - 01:48) KUZNEC написал(а):
забыл добавить <a href='javascript://' Onclick='set_enabled(\"card_id\")'>Изменить</a>

хочу добавить что пробовал много способов ничего не помогло и это один из них.

Спустя 7 часов, 46 минут, 18 секунд (24.02.2009 - 09:34) sergeiss написал(а):
Вот на 100% рабочий код из моего скрипта:
HTML
function set_enable( obj, to_do ) // установка разрешения/запрета на работу с объектом
{
document.getElementById( obj ).disabled=!to_do;
}

Спустя 2 минуты, 44 секунды (24.02.2009 - 09:37) KUZNEC написал(а):
А как вызываешь функцию покажи плз

Спустя 17 минут, 28 секунд (24.02.2009 - 09:55) sergeiss написал(а):
Да просто вызываю...
В данном примере суть такая: если юзер указывает, что он хочет работать с одной датой, то тогда ему запрещается выбирать дату для конца диапазона (выпадающий список с именем date_end). И заодно устанавливается состояние "выбран", если это было сделано ранее.
HTML
<input name="date_range" type="radio" value="oneday" onclick="set_enable('date_end', false); "
<?php if( !$date_range_set ) echo ' checked="checked" '; ?>
/>


PS. Для readonly аналогично изменяется.

Спустя 22 минуты, 39 секунд (24.02.2009 - 10:17) KUZNEC написал(а):
спасибо попробую

Спустя 5 часов, 48 минут (24.02.2009 - 16:05) KUZNEC написал(а):
Странно
Это не работает
HTML
<script LANGUAGE="JavaScript">
function set_enable( obj, to_do ) // установка разрешения/запрета на работу с объектом
{
document.getElementById( obj ).readonly=!to_do;
}
</SCRIPT>
<input id='date_end' name='date_end' type='text' value='1' readonly/>
<input name="date_range" type="radio" value="oneday" onclick="set_enable('date_end', false); "/>
<input name="date_range" type="radio" value="oneday" onclick="set_enable('date_end', true); "/>


А это работает:
HTML
<script LANGUAGE="JavaScript">
function set_enable( obj, to_do ) // установка разрешения/запрета на работу с объектом
{
document.getElementById( obj ).disabled=!to_do;
}
</SCRIPT>
<input id='date_end' name='date_end' type='text' value='1'/>
<input name="date_range" type="radio" value="oneday" onclick="set_enable('date_end', false); "/>
<input name="date_range" type="radio" value="oneday" onclick="set_enable('date_end', true); "/>

неужто так сильно отличаются эти атрибуты...или я что то попутал?

Спустя 35 минут, 13 секунд (24.02.2009 - 16:40) sergeiss написал(а):
А ты подумай...
disabled - "запрещено", поэтому фича работает, когда disabled==true;
readonly - "только для чтения", работает когда readonly==true;

Но!!! У меня была такая логика: если я пишу set_enable('date_end', false);, то я устанавливаю disabled в true (!!!), потому что функция называется set_enable smile.gif То есть, надо сделать "реверс". Поэтому в функции и стоит !to_do.
Для readonly надо делать прямую установку, либо правильно "обзывать" функцию и правильно выставлять логическую величину.

Например, можно так сделать:
HTML
<script LANGUAGE="JavaScript">
function set_readonly( obj, to_do )
{
document.getElementById( obj ).readonly=to_do;
}
</SCRIPT>


Или так
HTML
<script LANGUAGE="JavaScript">
function set_writeenable( obj, to_do )
{
document.getElementById( obj ).readonly=!to_do;
}
</SCRIPT>


В первом случае мы выставляем запрет на чтение (название функции), поэтому ...readonly=to_do, а во втором случае (согласно названию функции) выставляем разрешение на чтение, поэтому ...readonly=!to_do
И для одного и того же действия, запрета работы с объектом, мы должны вызвать одну из этих 2-х функций
HTML
set_readonly( 'date_end', true);
set_writeenable( 'date_end', false);

Спустя 1 час, 25 минут, 39 секунд (24.02.2009 - 18:06) KUZNEC написал(а):
у меня почему то не заработал твой способ, да и он координально ничего не изменил я же передаю либо true(что при ! получается false) либо false( что при ! получается true) т.е. логика таже
просто почему то readonly не принимает ни true Ни false может у него другие параметры?

Спустя 5 часов, 11 минут, 56 секунд (24.02.2009 - 23:18) KUZNEC написал(а):
Ошибку нашел свою
HTML
<script LANGUAGE="JavaScript">
function set_enable( obj, to_do ) // установка разрешения/запрета на работу с объектом
{
document.getElementById( obj ).read[b]O[/b]nly=to_do;
}
</SCRIPT>
<input id='date_end' type='text' value='1'/>
<input name="date_range" type="radio" value="oneday" onclick="set_enable('date_end', false); "/>
<input name="date_range" type="radio" value="oneday" onclick="set_enable('date_end', true); "/>

Я забыл чт оява чуствителен к регистру

всем огромное спасибо за помощь

Спустя 15 часов, 17 минут, 29 секунд (25.02.2009 - 14:35) sergeiss написал(а):
Цитата (KUZNEC @ 24.02.2009 - 23:18)
Я забыл что ява чуствителен к регистру

Молодец, что вспомнил smile.gif

Да и я тоже забыл про это, надо признать...

Спустя 22 дня, 4 часа, 14 минут, 10 секунд (17.03.2009 - 18:50) Bass написал(а):
Скажите, а как можно пользователю обойти свойство readonly на сайте? воспользоваться каким-нибудь броузером, который не читает такие значения?

Спустя 28 минут, 19 секунд (17.03.2009 - 19:18) waldicom написал(а):
Воспользоваться например firefox'ом с плагином WebDeveloper

Спустя 3 часа, 29 минут, 9 секунд (17.03.2009 - 22:47) sergeiss написал(а):
Цитата (Bass @ 17.03.2009 - 18:50)
Скажите, а как можно пользователю обойти свойство readonly на сайте? воспользоваться каким-нибудь броузером, который не читает такие значения?

У Оперы есть такое свойство (иногда) полезное - посмотреть исходный текст. Его можно скорректировать и тут же "применить" к загруженной странице и работать с уже измененными данными.

Спустя 9 часов, 19 минут, 9 секунд (18.03.2009 - 08:06) Sylex написал(а):
sergeiss
кстати, да, мне тоже нравится эта фишка smile.gif

Спустя 2 дня, 1 час, 41 минута, 45 секунд (20.03.2009 - 09:48) Bass написал(а):
Спасибо большое, Web Developer помог - точнее, его функция "make form writtable" smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.