Jump to content
  • 0

Кнопка Reset


slavok47
 Share

Question

Вопрос такой

имеется два элемента Чекбокс и Селект(по умолчанию disabled)

при помощи java скрипта при выборе чекбокса, селект переходит в состояние enabled

и вот в чем проблемка, при нажатии на кнопку reset сбрасывается все, и выбраное значение в select и снимается галочка с чекбокса, но сам select не переходит в состояние disabled

вот код скрипта:

function agreeForm3(f) {
if (f.Check3.checked) f.select1.disabled = 0
else f.select1.disabled = 1

код чекбокса:

<input type="checkbox" name="Check3" disabled onclick="agreeForm3(this.form)" />

код селекта:

<select name="select1"  disabled="disabled" >

я так понял что не происходит сброса скрипта, помогите с проблемой пожалуйста, уже неделю мучаюсь ;)

Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

Ресет формы сбрасывает только данные (в их defaultValue и defaultChecked соотв-но), на изменения, сделанные скриптом (визуальные стили, disable-нутость и т.п.) ресет не влияет. Но у формы есть событие onreset, на которое можно повесить сброс таких изменений.

Link to comment
Share on other sites

  • 0

slavok47, напишите функцию восстановления значений по умолчанию и назначьте ее как обработчик события onreset.

function setDefaults(f) {
f.Check3.checked = false;
f.select1.disabled = true;
}

<form action="___.php" method="post" name="form" onreset="setDefaults(this.form);">

Link to comment
Share on other sites

  • 0

Ура заработало! Спасибо Stix, принцип понятен с остальными элементами сделаю также, но вот получится слишком большой код (элементов много), пробовал создать файл .js и подключить как

<script type="text/javascript" src=".js"></script>

и в этот файл переношу скрипт который был на этой же страницы где элементы, что то не срабатывает, что я не так сделал? или это вообще не правильно? сорри, вопрос из другой темы

Кстати а можно ли как то к onreset привязат выполнение двух скриптов, типа сброс и вывод сообщения типа "Вы действительно хотите сбросить все данные?"

Edited by slavok47
Link to comment
Share on other sites

  • 0

Сценарий во внешнем файле правильно подключаете (с учетом того, что вместо ".js" прописан корректный путь). Во внешнем скрипте уже не должно быть никаких дескрипторов типа <script ...></script>. Если есть FF, посмотрите в консоли javascript, какие выдает ошибки.

сброс и вывод сообщения типа "Вы действительно хотите сбросить все данные?

Можно.

function setDefaults(f) {
if (!confirm("Вы действительно хотите сбросить все данные?")) {return false;}
f.Check3.checked = false;
f.select1.disabled = true;
return true;
}

<form action="___.php" method="post" onreset="return setDefaults(this);">

Edited by Styx
Link to comment
Share on other sites

  • 0
<form action="#" method="post">
<label><input type="text" size="15" name="resetable" />Это поле будет сброшено при ресете</label><br />
<label><input type="text" size="15" name="unresetable" onchange="this.defaultValue = this.value;" />А это поле не будет сброшено при ресете</label><br />
<input type="reset" value="Reset" />
</form>

Edited by Styx
Link to comment
Share on other sites

  • 0
<form action="#" method="post">
<label><input type="text" size="15" name="resetable" />Это поле будет сброшено при ресете</label><br />
<label><input type="text" size="15" name="unresetable" onchange="this.defaultValue = this.value;" />А это поле не будет сброшено при ресете</label><br />
<input type="reset" value="Reset" />
</form>

Styx, Спасибо все работает, но не в моем случае, дело в том что есть

<input type="text" size="15"  name="unresetable" id="username" value="$USERNAME$"/>

Где $USERNAME$ динамическое значение на статической странице, взятое из динамической страницы скриптом

<script> 
document.getElementById("username").value=window.parent.document.getElementById("username").value;
</script>

При открытии страницы в поле отображается логин пользователя, но при reset происходит сброс, и вместо логина становится значение $USERNAME$

Link to comment
Share on other sites

  • 0

А вы тогда после этой строчки динамического присваивания сделайте то же самое, но для атрибута defaultValue.

<script type="text/javascript">
var unresetableValue = window.parent.document.getElementById("username").value;
document.getElementById("username").value = unresetableValue;
document.getElementById("username").defaultValue = unresetableValue;
</script>

P.S. Кстати, возможно, вместо parent желательнее использовать атрибут opener, если, конечно, вы используете для открытия нового окна метод window.open.

Edited by Styx
Link to comment
Share on other sites

  • 0
если, конечно, вы используете для открытия нового окна метод window.open.

Если я правильно понял то речь идет о статическом окне, если да, то статическая форма находится в динамическом, во фрейме

Link to comment
Share on other sites

  • 0
Если вы работаете с фреймами, то всё нормально. Там нужен именно parent.

А если не с фреймами? Попробовал вместо фрейма сделать импорт удаленного кода статической страницы, допустим получил код $KODE$

и в динамическую страницу вставил $KODE$ и там же находится скрытое поле

<input type="hidden" id="username" value="$USERNAME$">

а на статической странице есть видимое поле

<input name="text" type="text" disabled="disabled" id="username" value="$USERNAME$" size="15" />
и скрипт передачи значения из скрытого в видимое поле
<script type="text/javascript">
var unresetableValue = window.parent.document.getElementById("username").value;
document.getElementById("username").value = unresetableValue;
document.getElementById("username").defaultValue = unresetableValue;
</script>

Такой вариант не сработал, значение не передавалось из скрытого поля, долго думал почему, и пришел к такому выводу: Если во фрейме работало, а во фрейме это типа страница в странице, то при использовании $KODE$ получается что все находится как бы на одной странице, и вот тут получается что на одной странице есть два поля с одинаковым ID, поэтому и не работало, в итоге,

в скрытом поле сменил ID="hiddenUserName" и исправил скрипт так:

<script type="text/javascript">
var unresetableValue = window.parent.document.getElementById("hiddenUserName").value;
document.getElementById("username").value = unresetableValue;
document.getElementById("hiddenUserName").defaultValue = unresetableValue;
</script>

Все заработало, значение предается, но reset сбрасывает это значение. я так понял что не должно сбрасываться видимое поле?

Подскажите где я не прав теоретически и ошибся в коде, и извините за много букафф, но пока писал немного начал понимать(я так думаю) :)

Link to comment
Share on other sites

  • 0

Мало что понял из ваших объяснений. Но, думаю, вам достаточно уяснить, что самая суть эффекта несбрасываемого при ресете поля состоит в том, чтобы при назначении полю атрибута value назначить то же самое значение атрибуту defaultValue этому же самому полю ввода. А вы атрибут value назначаете полю с id="username", а атрибут defaultValue — какому-то полю с id="hiddenUserName". Вот это последнее и не будет сброшено при ресете.

Link to comment
Share on other sites

  • 0

Спасибо, понял, в данном случае скрытое поле ни как не влияет на ресет, тоесть сбрасывалось видимое поле, вот тут я и не мог понять где происходит сброс в видимом или скрытом поле

исправил код на:

<script type="text/javascript">
var unresetableValue = window.parent.document.getElementById("hiddenUserName").value;
document.getElementById("username").value = unresetableValue;
document.getElementById("username").defaultValue = unresetableValue;
</script>

и все заработало :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy