Как заблокировать для редактирования все элементы формы? @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 22 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
HAGer Муж.
соучастник
0
Сообщения: 713
Зарегистрирован: 14.01.01
Откуда: Russia, Lipetsk
Заголовок сообщения: Как заблокировать для редактирования все элементы формы?
Сообщение Добавлено: 25 Март 2007, 14:17:20 
Есть код

Код:
    <form name="form1" action="makechanges.php" method="get">
    <table><tr><td>Attack</td><td><input size="1" MAXLENGTH="2" name="Par01" value="30"> </td></tr>
    <tr><td>Defence</td><td><input size="1" MAXLENGTH="2" name="Par02" value="82"> </td></tr>
    <tr><td>Balance</td><td><input size="1" MAXLENGTH="2" name="Par03" value="85"> </td></tr>
    ….
    ….
    <tr><td>Stamina</td><td><input size="1" MAXLENGTH="2" name="Par04" value="80"> </td>
    </tr>
    </form>



как сделать, чтобы при нажатии на ссылку все елементы этой формы стали disabled?

сейчас пишу так:

document.getElementsByTagName('input').disabled = true;

Не работает. :frown:

_________________
Copyright © 2000–2011 by HAGer
gro
новый человек
17
Сообщения: 43
Зарегистрирован: 09.09.06
Сообщение Добавлено: 25 Март 2007, 14:51:48 

Цитата:
document.getElementsByTagName('input').disabled = true;

Не работает



Еще бы работало. getElements... возвращает коллекцию элементов. Вот по ней и нужно пройтись.

Код:
var inps = document.getElementsByTagName( "input" );
for ( var i = 0; i < inps.length; i++ )
    inps.item( i ).disabled = true;
HAGer Муж.
соучастник
0
Сообщения: 713
Зарегистрирован: 14.01.01
Откуда: Russia, Lipetsk
Сообщение Добавлено: 25 Март 2007, 14:56:19 
Век живи, век учись!
Пасиб!

_________________
Copyright © 2000–2011 by HAGer
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 25 Март 2007, 15:52:55 
Джентльмены в курсе существования библиотеки Prototype?
gro
новый человек
17
Сообщения: 43
Зарегистрирован: 09.09.06
Сообщение Добавлено: 25 Март 2007, 18:22:35 
Готовые библиотеки, сами по себе вещь, конечно, хорошая.
Но, как побочный эффект они производят на свет людей, которым, действительно, легче подключить 50-килобайтовый файл и скопировать где-то найденный код, чем написать 3 строчки.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 25 Март 2007, 18:56:35 
...что определенно не хуже, чем изобретать по 50k велосипедов на каждый сайт... :)
vashurin
новый человек
9
Сообщения: 129
Зарегистрирован: 21.06.06
Откуда: Самара
Сообщение Добавлено: 26 Март 2007, 04:54:47 

Crazy писал(а):
...что определенно не хуже, чем изобретать по 50k велосипедов на каждый сайт... :)


оффтопик:
Crazy, хуже, гораздо хуже.…, думать иногда полезно собственной головой, а не чужой библиотекой... Например, нафига в данной ситуации, подключать функции Ajax'а? А ведь они будут подключены при использовании prototype.js

_________________
С уважение, Вашурин Владимир.
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 26 Март 2007, 10:06:23 
vashurin, вы не используете АЯКС, тогда мы идем к вам :lol:

Нет, ну проще же сделать один раз


Цитата:
$('formid').disable();



и не изобретать велосипед

_________________
:: metal kick ass ::
vashurin
новый человек
9
Сообщения: 129
Зарегистрирован: 21.06.06
Откуда: Самара
Сообщение Добавлено: 26 Март 2007, 10:47:47 

MpaK999 писал(а):
vashurin, вы не используете АЯКС, тогда мы идем к вам :lol:


использую, но это не значит, что надо сувать где попало, тем более там где он не нужен (в данном случая код составил 3 строки, а был бы файл в 50 килобайт кода). Хотя, может это я ни чего не понимаю в программировании и вебе?
оффтопик:
кстати, про prototype.js , великое совершение, написать библиотеку, которая имитирует псевдо Jav'овый синтаксис при составлении псевдо классов (которые на поверку всего лишь хеши).

_________________
С уважение, Вашурин Владимир.
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 26 Март 2007, 11:20:13 
vashurin, зачем куда попало, как раз в этой задаче решает проблему на все сто, блочит всю форму, конечно можно написать свой обработчик формы, пройтись по всем элементам и дизаблить их, но это тот же велосипед - хочу посмотреть этот ваш код в 3 строки.

Если уж нужен простой вариант, то вешать на onSubmit функцию которая отключит в форме лишь кнопку submit

_________________
:: metal kick ass ::
prometheus Муж.
соучастник
20
Сообщения: 380
Зарегистрирован: 02.01.07
Откуда: у Майкла Дугласа базука?
Сообщение Добавлено: 26 Март 2007, 11:44:09 
1) Не нужна здесь никакая библиотека.
2) Зачем дизайблить все инпуты на странице (document.getElementsByTagName( "input" );)
Это не правильно.
В данной ситуации нужно обращаться к экземплярам формы (form)

var el = document.form_name.elements;
var fl = el.length;
for (var i=0;i<fl;i++) {

}


И уже внутри цикла, смотреть является ли отдельный (el[i]) элемент input и если он не дизайблен, то делать это с ним.

_________________
Прометей.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 26 Март 2007, 12:21:16 

vashurin писал(а):
использую, но это не значит, что надо сувать где попало, тем более там где он не нужен (в данном случая код составил 3 строки, а был бы файл в 50 килобайт кода).



Очень хороший пример невтемного совета. Невтемного потому, что давший его человек не знает, что еще делается на странице и в действительности не может быть уверен в оптимальности своего совета.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 26 Март 2007, 12:22:21 

MpaK999 писал(а):
Если уж нужен простой вариант, то вешать на onSubmit функцию которая отключит в форме лишь кнопку submit



А еще лучше -- скрывающий всю форму. Ибо если форма полностью заблокирована, то ей незачем занимать место на странице.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 26 Март 2007, 12:25:07 

vashurin писал(а):
оффтопик:
кстати, про prototype.js , великое совершение, написать библиотеку, которая имитирует псевдо Jav'овый синтаксис при составлении псевдо классов (которые на поверку всего лишь хеши).



оффтопик:
Здесь проблема не в дизайне prototype.js, а в том, что вы не понимаете, что и зачем там сделано. Но это не проблема авторов protoype.js и уж тем более не моя. Просто FYI.
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 26 Март 2007, 12:34:22 
prometheus, у вас уже не три строки :)

vashurin писал(а):
в данном случая код составил 3 строки




Crazy писал(а):
А еще лучше -- скрывающий всю форму.


да, это тоже хорошо, люблю например это делать эффектами того же прототипа :)))

_________________
:: metal kick ass ::
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 26 Март 2007, 12:43:47 

MpaK999 писал(а):
люблю например это делать эффектами того же прототипа :)))



Кстати, хороший пример того, что однажды подцепив к странице prototype обнаруживаешь, что есть еще немало мелочей, в которых он может ее улучшить. Любая из них вручную пишется в 10-30 строк, но они почему-то всегда остаются ненаписанными.

Простейший пример -- позиционирование курсора на первое поле формы. Оно делается в одну строку что с prototype, что без него. Но во втором варианте встречается чаще.
prometheus Муж.
соучастник
20
Сообщения: 380
Зарегистрирован: 02.01.07
Откуда: у Майкла Дугласа базука?
Сообщение Добавлено: 26 Март 2007, 12:45:31 

MpaK999 писал(а):
prometheus, у вас уже не три строки :)

А я и не обещал три строки, там аж строчек так, десять предполагается




MpaK999 писал(а):
люблю например это делать эффектами того же прототипа :)))



Хороше же вам, а меня заставляют самого все писать :)

_________________
Прометей.
prometheus Муж.
соучастник
20
Сообщения: 380
Зарегистрирован: 02.01.07
Откуда: у Майкла Дугласа базука?
Сообщение Добавлено: 26 Март 2007, 13:00:53 

Crazy писал(а):

MpaK999 писал(а):
люблю например это делать эффектами того же прототипа :)))



Кстати, хороший пример того, что однажды подцепив к странице prototype обнаруживаешь, что есть еще немало мелочей, в которых он может ее улучшить. Любая из них вручную пишется в 10-30 строк, но они почему-то всегда остаются ненаписанными.

Простейший пример -- позиционирование курсора на первое поле формы. Оно делается в одну строку что с prototype, что без него. Но во втором варианте встречается чаще.



Кстати, говоря prototype совсем не панацея.
Там расширяются свойства и методы, тот же Array - из за чего ее не всегда можно использовать.
Другие скрипты работать не будут.

_________________
Прометей.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 26 Март 2007, 13:13:52 

prometheus писал(а):
Там расширяются свойства и методы, тот же Array - из за чего ее не всегда можно использовать. Другие скрипты работать не будут.



Это есть. Но есть и нюанс: перестают работать те и только те скрипты, которые неправильно использовали Array.
prometheus Муж.
соучастник
20
Сообщения: 380
Зарегистрирован: 02.01.07
Откуда: у Майкла Дугласа базука?
Сообщение Добавлено: 26 Март 2007, 13:49:39 

Crazy писал(а):

prometheus писал(а):
Там расширяются свойства и методы, тот же Array - из за чего ее не всегда можно использовать. Другие скрипты работать не будут.



Это есть. Но есть и нюанс: перестают работать те и только те скрипты, которые неправильно использовали Array.



Хм, и что тут может быть неправильно?

var basket = getCookie('basket');
var goods_arr = basket.split("|");
var goods = new Array;
for (i in goods_arr) {
if (goods_arr[i] == "") continue;
var arr = goods_arr[i].split(':');


}

_________________
Прометей.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 26 Март 2007, 14:05:33 
prometheus, признайтесь: вы не читали ни стандарта ECMAscript, ни хотя бы документации на prototype.js :)

Hint: цикл for-in служит вовсе не для перебора элементов массива, а для перебора свойств объекта. Подробно это описано на страницах 65-66 стандарта.

Глюки дизайна в prototype.js действительно есть. Но не здесь. :)
prometheus Муж.
соучастник
20
Сообщения: 380
Зарегистрирован: 02.01.07
Откуда: у Майкла Дугласа базука?
Сообщение Добавлено: 26 Март 2007, 14:25:08 

Crazy писал(а):
prometheus, признайтесь: вы не читали ни стандарта ECMAscript, ни хотя бы документации на prototype.js :)



Признаюси - по ECMAscript так подробно (аж до 65 стр) не читал :)
А уж доку по prototype - тем более :) Без него пока обхожуся. У меня своя рукописная библиотечка для всяких трюкенций...

P.S. А программеру, что написал "i in goods_arr" - выговор :)

_________________
Прометей.
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 22 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100