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

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

.....
<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
15.04.2008, 13:11
    #35255959
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Readonly с помошью скрипта не срабатывает
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
15.04.2008, 15:34
    #35256543
а12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Readonly с помошью скрипта не срабатывает
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
15.04.2008, 15:36
    #35256557
а12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Readonly с помошью скрипта не срабатывает
readonly='readonly' readonly=true readonly=1 ????
...
Рейтинг: 0 / 0
15.04.2008, 15:39
    #35256572
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Readonly с помошью скрипта не срабатывает
Потому что атрибуты тега не тоже самое, что свойства объекта. Скрипты работают со свойствами объектов, в html-разметке - атрибуты. Атрибуты обычно пишутся текстом, при работе со скриптами нужно точно знать (или обладать воображением, чтобы догадаться) какое свойство принимает значения какого типа.
...
Рейтинг: 0 / 0
15.04.2008, 15:43
    #35256583
a12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Readonly с помошью скрипта не срабатывает
Спешу вас расстроить неработает
Точьнее срабатывает всего один раз, потом все
...
Рейтинг: 0 / 0
15.04.2008, 15:49
    #35256605
а12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Readonly с помошью скрипта не срабатывает
a12345Спешу вас расстроить неработает
Точьнее срабатывает всего один раз, потом все

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

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

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

Кстати функцию можно написать проще:
Код: plaintext
1.
2.
3.
function changeReadonly(chkObj,elementId) {
	var objElement = document.getElementById(elementId);
	objElement.readOnly=chkObj.checked;
}
...
Рейтинг: 0 / 0
15.04.2008, 15:55
    #35256633
а12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Readonly с помошью скрипта не срабатывает
Как ни странно, но тот же скрипт для disabled на Submit работает прекрассно
...
Рейтинг: 0 / 0
15.04.2008, 15:56
    #35256637
а12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Readonly с помошью скрипта не срабатывает
Может дело в Ехплорере у меня 7
...
Рейтинг: 0 / 0
15.04.2008, 16:00
    #35256653
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Readonly с помошью скрипта не срабатывает
Дело не в IE (e меня тоже 7), а в документе, который сложнее, чем представленный здесь отрывок, и по-любому содержит еще пару-тройку косяков.
...
Рейтинг: 0 / 0
15.04.2008, 16:37
    #35256771
а12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Readonly с помошью скрипта не срабатывает
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
16.04.2008, 01:27
    #35257564
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Readonly с помошью скрипта не срабатывает
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
16.04.2008, 09:41
    #35257820
a12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Readonly с помошью скрипта не срабатывает
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
16.04.2008, 10:20
    #35257932
a12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Readonly с помошью скрипта не срабатывает
Еще один вопросик

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

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


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