[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Яваскрипт отключения полей
CaXaP
Доброго вечера всем)

Столкнулся с такой проблемой:
между отправками данных на сервер и получением результата (0.5-2 сек) требуется сделать несколько inputов неактивными (там текстовые поля и чекбоксы).

Первое, что приходит в голову, это установка disabled=true, но при этом цвет инпутов меняется на серый (неактивный) - для меня это неприемлимо...

Есть ли способ сделать инпуты неактивными (будто бы у них disabled=true), при этом не изменяя их внешний вид?

Заранее спасибо.



Спустя 29 минут, 30 секунд (15.01.2009 - 21:27) sergeiss написал(а):
"Поиграйся" со стилями. А именно, с цветом фона у инпутов и цветом символов.

Штука рабочая smile.gif Правда, я использую это для ограничений при простом вводе текста. Чтобы можно было сделать некоторые текстовые поля чисто информационными, но чтобы они не были другого цвета (фактически, то же, что и ты делаешь).

PS. Вот такую вещь надо сделать (цвета - для примера, белый фон и черные буквы - можно любые взять), но только средствами ДжавыСкрипт : style="background-color:#FFFFFF; color:#000000"
Точнее говоря, фон-то белый получается, а буквы все равно серые.

Спустя 5 часов, 31 минута, 10 секунд (16.01.2009 - 02:59) CaXaP написал(а):
За совет спасибо)
Правда фон и так был белым, а буквы серыми))))

Меня вот не устраивает именно это "мигание".
Т.е. становление букв серыми на полсекунды...

Мб какой-нибудь альтернативный способ есть?

У меня были мысли перехватывать нажатия кнопок и возвращать содержимым полей их исходные значения. Но это пляски с бубном и хотелось бы чего-нибудь попроще)

Спустя 17 минут, 51 секунда (16.01.2009 - 03:16) kirik написал(а):
CaXaP, а этот вариант пойдет?
Код
<script>
function ge(id)
{
return document.getElementById(id);
}

function disable(obj, id)
{
if(ge(id).disabled)
{
 ge(id).disabled = false;
 obj.value = 'Disable';
}
else
{
 ge(id).disabled = true;
 obj.value = 'Enable';
}
}
</script>
<input type="text" value="text" id="test" style="border: 1px solid #ccc; background: #f9f9f9; color: #333;" /><br />
<input type="button" onclick="disable(this, 'test')" value="Disable" />

Спустя 6 часов, 20 минут, 45 секунд (16.01.2009 - 09:37) sergeiss написал(а):
Вот еще мысль появилась smile.gif
Реализовать несложно, да и выглядеть будет "красиво".

Суть простая: надо выставлять состояние disabled в обработчике onmouseover (когда мышА проходит над объектом), и только тогда, когда происходит ожидание данных. Это позволит, во-первых, избавиться от любого "мигания" (его просто не будет), во-вторых, юзер не сможет ничего нажать (ты его жестко ограничишь), и, в-третьих, при попытке что-то нажать юзер увидит, что он этого сделать не сможет (по изменению цвета объекта, который, т.е. цвет, можно оставить "по умолчанию").
В итоге и волки сыты, и овцы целы.
И это существенно проще, чем перехватывать нажатия. Лучше просто не давать ничего нажимать.

Спустя 2 часа, 52 минуты, 52 секунды (16.01.2009 - 12:30) FatCat написал(а):
input type=image не спасет от мигания? wink.gif

Спустя 21 минута, 39 секунд (16.01.2009 - 12:52) sergeiss написал(а):
Цитата (FatCat @ 16.01.2009 - 12:30)
input type=image не спасет от мигания? wink.gif

Придется тогда переделывать скрипт, чтобы на базе имиджа делать видимость чекбокса.
Фигасе, спасёт smile.gif Замучаешься ковыряться.

Спустя 2 дня, 3 часа, 57 минут, 5 секунд (18.01.2009 - 16:49) Alchemist написал(а):
хм.. господа, а что про аттрибут readonly вообще никто не слыхал ?

Спустя 2 часа, 43 минуты, 7 секунд (18.01.2009 - 19:32) sergeiss написал(а):
Посмотрел я описалово для инпута... Не вижу там свойства readonly ohmy.gif
Если можно его использовать - приведи код?

Вот то, что я писал про использование mouseover & mouseout - я проверял уже, поэтому был уверен, когда писал в этой теме. А с readonly не уверен...

Всё, что я нашел связанное с этим словом - это указание на то, что какие-то свойства могут быть readonly, но такого свойства нигде не нашел, ни для какого бы то ни было объекта.

Спустя 13 минут, 31 секунда (18.01.2009 - 19:45) Sylex написал(а):
Alchemist
слыхали, тока внешний вид от него тож немного меняется smile.gif

Спустя 1 час, 44 минуты, 13 секунд (18.01.2009 - 21:30) CaXaP написал(а):
Всем спасибо за ответы)

2kirik
Честно не понял чем Ваш код отличается от того, что использовался у меня - Вы также просто присваиваете свойство disabled = true, а я уже писал, что это мне не подходит, ибо поле становится серым.

2sergeiss
Хорошая идея! Её и реализовал - выглядит и вправду хорошо)
Правда срабатывает только onmouseover, а onmouseout не работает...
Странно, но в целом бог с ним - за эти 1-2 секунды юзер особенно это и не заметит. Спасибо.

Про readonly тоже ничего не слышал =\

Спустя 10 минут, 32 секунды (18.01.2009 - 21:40) kirik написал(а):
CaXaP, если прописать стиль для элемента, то он не сереет (в ФФ).
а вообще можно сделать onkeypress="return false" для текстового поля и onclick="return false" для чекбоксов.

Спустя 12 часов, 36 минут, 44 секунды (19.01.2009 - 10:17) Guest написал(а):
М... стиль я прописывал - он не помог... (в ИЕ по крайней мере - а он для меня глваенствующий).

Про onkeypress да... можно попробовать, однако идея с затемнением при наведении мне больше подходит - чтоб юзер при попытке клика всё же видел, что контрол отключён, а не жал безрезультатно, покрывая сайт матами "почему не жмёца кнопко".


_____________
Быстрый ответ:

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