powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Readonly с помошью скрипта не срабатывает
16 сообщений из 16, страница 1 из 1
Readonly с помошью скрипта не срабатывает
    #35255390
a12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ помогите пожалуйста

Итак есть форма в которой в зависимости от состояния чекбокса пользователь должен или не должен вводить пароль вот:

.....
<input type="checkbox" id="chbEnabler" name="chbEn" onclick="changeReadonly('chbEn','pwd1')" value="a1">
.....
<input id="P1" type="password" name="pwd1" readonly='false'/>
.....

Есть скрипт который должет это дело обеспечить:

function changeReadonly(myName,elementName) {
Me = document.getElementByName(myName);
objElement = document.getElementByName(elementName);
if(Me.checked){
objElement.readonly='true';
} else {
objElement.readonly='false';
}
}

или альтернативный

function changeReadonly(myId,elementId) {
Me = document.getElementById(myId);
objElement = document.getElementById(elementId);
if(Me.checked){
objElement.readonly='true';
} else {
objElement.readonly='false';
}
}


Но Ехплорер с..ка выдает Object Expected
Подскажите что здесь не так
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35255959
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a12345
Но Ехплорер с..ка выдает Object Expected

лучше б на себя посмотрели... спецификации и документацию читать надо.

Итак:
по первому варианту
нету getElementByName. Есть getElement s ByName, и возвращает этот метод массив элементов с заданным name

по второму варианту
readonly и так по умолчанию не выставлен, чего вы его еще сверху пихаете.
'true' и 'false' - это тупо строки, а не булевы значения
в свойствах, чьи названия состоят из нескольких слов, второе слово пишется с большой буквы. readOnly.

Итого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<input type="checkbox" id="chbEnabler" name="chbEn" onclick="changeReadonly(this,'P1')" value="a1">
<input id="P1" type="password" name="pwd1">
<script>
function changeReadonly(chkObj,elementId) {
	var objElement = document.getElementById(elementId);
	if(chkObj.checked){ objElement.readOnly= 1 ; } 
	else { objElement.readOnly= 0 ; }
}
</script>

Проверяйте.
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35256543
а12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
illion a12345
Но Ехплорер с..ка выдает Object Expected

лучше б на себя посмотрели... спецификации и документацию читать надо.

Итак:
по первому варианту
нету getElementByName. Есть getElement s ByName, и возвращает этот метод массив элементов с заданным name

по второму варианту
readonly и так по умолчанию не выставлен, чего вы его еще сверху пихаете.
'true' и 'false' - это тупо строки, а не булевы значения
в свойствах, чьи названия состоят из нескольких слов, второе слово пишется с большой буквы. readOnly.

Итого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<input type="checkbox" id="chbEnabler" name="chbEn" onclick="changeReadonly(this,'P1')" value="a1">
<input id="P1" type="password" name="pwd1">
<script>
function changeReadonly(chkObj,elementId) {
	var objElement = document.getElementById(elementId);
	if(chkObj.checked){ objElement.readOnly= 1 ; } 
	else { objElement.readOnly= 0 ; }
}
</script>

Проверяйте.


Большое спасибо заработало.
Но вот объясните мне пожалуйста ведь можно указывать например disabled='disabled' или disabled=true, disabled=1
так почему же тогда у меня не срабатывало ?
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35256557
а12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
readonly='readonly' readonly=true readonly=1 ????
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35256572
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что атрибуты тега не тоже самое, что свойства объекта. Скрипты работают со свойствами объектов, в html-разметке - атрибуты. Атрибуты обычно пишутся текстом, при работе со скриптами нужно точно знать (или обладать воображением, чтобы догадаться) какое свойство принимает значения какого типа.
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35256583
a12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спешу вас расстроить неработает
Точьнее срабатывает всего один раз, потом все
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35256605
а12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a12345Спешу вас расстроить неработает
Точьнее срабатывает всего один раз, потом все

Довайте я точнее опишу что происходит

Первоначально все элементы не активны, чекбокс отмечен
1. снимаю птичку с чекбокса - элементы все равно неактивны
2. устанавливаю птичку - элементы не активны
3. снимаю - элементы активны
4. устанавливаю - элементы активны
3. снимаю - элементы активны
5. устанавливаю - элементы активны
6. снимаю - элементы активны
......

Скрипт как-будто живет своей жизнью !!!????
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35256612
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спешу в свою очередь расстроить вас дважды
1) Мы не расстраиваемся по поводу чужих проблем.
2) Все прекрасно работает.

Кстати функцию можно написать проще:
Код: plaintext
1.
2.
3.
function changeReadonly(chkObj,elementId) {
	var objElement = document.getElementById(elementId);
	objElement.readOnly=chkObj.checked;
}
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35256633
а12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как ни странно, но тот же скрипт для disabled на Submit работает прекрассно
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35256637
а12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может дело в Ехплорере у меня 7
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35256653
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело не в IE (e меня тоже 7), а в документе, который сложнее, чем представленный здесь отрывок, и по-любому содержит еще пару-тройку косяков.
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35256771
а12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyДело не в IE (e меня тоже 7), а в документе, который сложнее, чем представленный здесь отрывок, и по-любому содержит еще пару-тройку косяков.

Вообщето это JSP страничка, позволяющая пользователю заблокировать свой аккаунт, при этом он(пользователь) должен ввести пароль для блокировки/разблокировки.
Первоначальные настройки зависят от состояния пользователя на момент запроса. Один чекб.,два пасс., один сабмит.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
<form action="" method="POST">
<table>
   </tr>
        <td colspan="2">
        <%
        if (PU.getUBlocked()> 0 ){
        %>      
         <input type="checkbox" id=chbEnabler name="chbEn" onclick="changeDisabled('chbEnabler','Submit');changeReadonly('chbEnabler','MyPass01');changeReadonly('chbEnabler','MyPass02')"  value="a1" checked>
        <%
        } else {
        %>
         <input type="checkbox" id=chbEnabler name="chbEn" onclick="changeDisabled('chbEnabler','Submit');changeReadonly('chbEnabler','MyPass01');changeReadonly('chbEnabler','MyPass02')"  value="a1">
        <%}%>
        Пользователь разблокирован </input>
        </td>
   </tr>
   <tr>
        <td  bgcolor='#cccccc' width='200px'>
            Пароль разблокировки
        </td>
        <td  bgcolor='White'>
        <%
        if (PU.getUBlocked()> 0 ){
        %>      
        <input id=MyPass01 type="password" name="pwd1"/>
        <%
        } else {
        %>
        <input id=MyPass01 type="password" name="pwd1" readOnly/>
        <%}%>
        </td>       
   </tr>
   <tr>
        <td  bgcolor='#cccccc' width='200px'>
            Пароль разблокировки (повтор)        
       </td>
        <td  bgcolor='White'>
        <%
        if (PU.getUBlocked()> 0 ){
        %>      
        <input id=MyPass02 type="password" name="pwd2"/>
        <%
        } else {
        %>
        <input id=MyPass02 type="password" name="pwd2" readOnly/>
        <%}%>
        </td>       
   </tr>
   <tr>
        <td  bgcolor='White' width='200px'>    
        </td>
        <td  bgcolor='White'>
        <%
        if (PU.getUBlocked()> 0 ){
        %>      
        <input type="submit" id=Submit name="Submit" value="  Подтвердить  "/>
        <%
        } else {
        %>
        <input type="submit" id=Submit  name="Submit" value="  Подтвердить  " disabled/>
        <%}%>       
        </td>       
   </tr>
   <tr>
</table>
</form>

Кстати когда использую this Explorer тоже ругается. :(
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35257564
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.
а12345Довайте я точнее опишу что происходит
Первоначально все элементы не активны, чекбокс отмечен

сами себе противоречите. Из вашего кода ясно видно, что при PU.getUBlocked()>0 чекбокс отмечен, а элементы активны.

2.
правьте это
Код: plaintext
1.
2.
<table>
   </tr>
...
и это
Код: plaintext
1.
2.
...
<tr>
</table>

и вот это еще интересно:
Код: plaintext
<input type="checkbox" id=chbEnabler name="chbEn" onclick="changeDisabled('chbEnabler','Submit');changeReadonly('chbEnabler','MyPass01');changeReadonly('chbEnabler','MyPass02')"  value="a1">        Пользователь разблокирован </input>
чего это вдруг input type="checkbox" стал контейнером?

3.
ёхты-бабахты. С jsp я мало знакома - так, ради интересу немножко ковыряла, но в моем разумении код должен на самом деле выглядеть как-то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
<script>
function changeState(oCheck,aElements) {
	var el;
	for (var i= 0 ; el = document.getElementById(aElements[i]); i++)
	{
		switch (el.type)
		{
			case 'password':
				el.readOnly=oCheck.checked;	
				break;
			case 'submit':
				el.disabled=oCheck.checked;	
		}
	}
}
</script>
<form action="" method="POST">
<table>
   <tr>
        <td colspan="2">
        <input type="checkbox" name="chbEn" onclick="changeState(this,['Submit','MyPass01','MyPass02'])" value="a1"<%if (PU.getUBlocked()> 0 ) out.print(" checked");%> />
		Пользователь разблокирован
        </td>
   </tr>
   <tr>
        <td  bgcolor='#ccc' width='200px'>Пароль разблокировки</td>
        <td  bgcolor='#fff'>
			<input id="MyPass01" type="password" name="pwd1"<%if ( PU.getUBlocked()<= 0  ) out.print(" readonly");%> />
        </td>       
   </tr>
   <tr>
        <td  bgcolor='#ccc' width='200px'>Пароль разблокировки (повтор)</td>
        <td  bgcolor='#fff'>
			<input id="MyPass02" type="password" name="pwd2"<%if ( PU.getUBlocked()<= 0 ) ) out.print(" readonly");%> />
        </td>       
   </tr>
   <tr>
        <td  bgcolor='#fff' width='200px'> </td>
		<td  bgcolor='#fff'>
			<input type="submit" id=Submit  name="Submit" value="  Подтвердить  "<%if ( PU.getUBlocked()<= 0  ) out.print(" disabled");%> />
        </td>       
   </tr>
   <tr>
</table>
</form>

4.
а12345Кстати когда использую this Explorer тоже ругается. :(
дааа?... И че бормочет?
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35257820
a12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
illion1.
а12345Довайте я точнее опишу что происходит
Первоначально все элементы не активны, чекбокс отмечен

сами себе противоречите. Из вашего кода ясно видно, что при PU.getUBlocked()>0 чекбокс отмечен, а элементы активны.

2.
правьте это
Код: plaintext
1.
2.
<table>
   </tr>
...
и это
Код: plaintext
1.
2.
...
<tr>
</table>

и вот это еще интересно:
Код: plaintext
<input type="checkbox" id=chbEnabler name="chbEn" onclick="changeDisabled('chbEnabler','Submit');changeReadonly('chbEnabler','MyPass01');changeReadonly('chbEnabler','MyPass02')"  value="a1">        Пользователь разблокирован </input>
чего это вдруг input type="checkbox" стал контейнером?

3.
ёхты-бабахты. С jsp я мало знакома - так, ради интересу немножко ковыряла, но в моем разумении код должен на самом деле выглядеть как-то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
<script>
function changeState(oCheck,aElements) {
	var el;
	for (var i= 0 ; el = document.getElementById(aElements[i]); i++)
	{
		switch (el.type)
		{
			case 'password':
				el.readOnly=oCheck.checked;	
				break;
			case 'submit':
				el.disabled=oCheck.checked;	
		}
	}
}
</script>
<form action="" method="POST">
<table>
   <tr>
        <td colspan="2">
        <input type="checkbox" name="chbEn" onclick="changeState(this,['Submit','MyPass01','MyPass02'])" value="a1"<%if (PU.getUBlocked()> 0 ) out.print(" checked");%> />
		Пользователь разблокирован
        </td>
   </tr>
   <tr>
        <td  bgcolor='#ccc' width='200px'>Пароль разблокировки</td>
        <td  bgcolor='#fff'>
			<input id="MyPass01" type="password" name="pwd1"<%if ( PU.getUBlocked()<= 0  ) out.print(" readonly");%> />
        </td>       
   </tr>
   <tr>
        <td  bgcolor='#ccc' width='200px'>Пароль разблокировки (повтор)</td>
        <td  bgcolor='#fff'>
			<input id="MyPass02" type="password" name="pwd2"<%if ( PU.getUBlocked()<= 0 ) ) out.print(" readonly");%> />
        </td>       
   </tr>
   <tr>
        <td  bgcolor='#fff' width='200px'> </td>
		<td  bgcolor='#fff'>
			<input type="submit" id=Submit  name="Submit" value="  Подтвердить  "<%if ( PU.getUBlocked()<= 0  ) out.print(" disabled");%> />
        </td>       
   </tr>
   <tr>
</table>
</form>

4.
а12345Кстати когда использую this Explorer тоже ругается. :(
дааа?... И че бормочет?

1. Ой я и сам запутался уже. Уточнил у постановщика - птичка указывает на то что запись заблокирована.
2. Спасибо!!! не заметил :(
3. Красивое решение спасибо. Я с JavaScript неочень знаком - он отличается от класической Джавы. Пытаюсь что-то делать сам, но как правило получаются ляпы.
Всвязи с 1 немного переделал ваш вариант.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
.......
case 'password':
	el.readOnly=!oCheck.checked;	
	break;
case 'submit':
	el.disabled=!oCheck.checked;	
......

        <input type="checkbox" name="chbEn" onclick="changeState(this,['Submit','MyPass01','MyPass02'])" value="a1"<%if (PU.getUBlocked()< 0 ) out.print(" checked");%> />
		Пользователь заблокирован
.........
Теперь все работает так как надо!

4. Теперь не ругается, повидимому была другая ошибка а ехплорер на this ругался.

Огромное спасибо!
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35257932
a12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще один вопросик

Как отправить submit от формы при снятии этого злополучного chekbox-a учитывая то что в этот момент у нас submit устанавливается в disabled?
...
Рейтинг: 0 / 0
Readonly с помошью скрипта не срабатывает
    #35257960
а12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сори, было правильно
......

<input type="checkbox" name="chbEn" onclick="changeState(this,['Submit','MyPass01','MyPass02'])" value="a1"<%if (PU.getUBlocked() > 0) out.print(" checked");%> />
Пользователь заблокирован
.........
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Readonly с помошью скрипта не срабатывает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]