спрятать/показать поле ввода при нажатии на checkbox
Ребят, подкскажите пожалуйста код скрипта, который бы при нажатии на поле формы типа checkbox, скрывал/показывал поле типа text в зависимости от состояния checkbox? (когда checkbox нажат поле ввода появляется и наоборот).
Заранее спасибо! |
Попробуй к checkbox добавить 'onClick'
<input type=checkbox onClick="hideOrShowText()"> ...и сделай скрипт (с названием hideOrShowText), который бы показывал/скрывал текст. Я всегда делаю так. Это не очень профессионально, но всё-же, всё-же... |
Спасибо!
Вот мой вариант <body> <script type="text/javascript"> function showMe (box) { var vis = (box.checked) ? "block" : "none"; document.getElementById('div1').style.display = vis; } </script> show/hide: <input type="checkbox" name="multi_note" value="1" onclick="showMe(this)"> <div id="div1" style="display:block; display:none;"> <input type=text> </div> </body> |
Всем спасибо! Кому нужно - пользуйтесь на здоровье!
|
Цитата:
|
все можно было и в onclick запихнуть
|
..т.е примерно так:
<input type="checkbox" checked="checked" onclick="this.nextSibling.style.display=this.checked?'':'none';"><input type="text"> Ничего, понимание должно придти, вы по крайней мере сделали всё сам, что уже гуд.) P.S. А ещё лучше, чтоб проблем с вёрсткой не было, использовать visibility:hidden; |
Цитата:
|
Подскажите пожалуйста а как сделать так чтобы при снятии галочки с чекбокса значения элементов ввода не просто скрывались в невидимом <div> но и еще обнулялись или блокировались?
|
Это просто вариант господина Aetae, но с добавлениями. Мне кажется, это было очевидно...
<input type="checkbox" checked="checked" onclick="if(this.checked){this.nextSibling.style.display=''}else {this.nextSibling.style.display='none'; this.nextSibling.value='';}"><input type="text"> |
<input type="checkbox" checked="checked" onclick="if(this.checked){this.nextSibling.style.display=''}else {this.nextSibling.style.display='none'; this.nextSibling.value='';}"><input type="text" placeholder="Название турнира"> как в этом коде зделать штобы галочка изночально не стояла а при постановке галочки поевлялось поле |
<input type="checkbox" onclick="if(this.checked){document.getElementById('nextSibling').style.display='inline-block'}else {document.getElementById('nextSibling').style.display='none'; document.getElementById('nextSibling').value='';}"> <input type="text" placeholder="Название турнира" style="display: none;" id="nextSibling"> |
Цитата:
|
;) Не за что, я бы сделал отдельную функцию как описывалось ранее, и onclick бы выполнял функцию. Но это уже дело привычки, как кому удобно.
|
Fatal error: Smarty error: [in W:\html\home-cs.lc\www/plugins/clans/templates/skin/default/actions/ActionClans/wars_create.tpl line 45]: syntax error: unrecognized tag: document.getElementById('nextSibling').style.display='inline-block' (Smarty_Compiler.class.php, line 446) in W:\html\home-cs.lc\www\engine\lib\external\Smarty-2.6.19\libs\Smarty.class.php on line 1092мне вот такую ошибку выдает при открывании станицы с данным кодом на этот код <input type="checkbox" checked="checked" onclick="if(this.checked){this.nextSibling.style.display=''}else {this.nextSibling.style.display='none'; this.nextSibling.value='';}"><input type="text" placeholder="Название турнира"> он не ругался вабше |
а все поченил сам =)
|
А подскажите, плз, как сделать так, чтобы когда чекбокснул - скрывалось (открывалось) не одно поле, а несколько...
|
BLP, засуньте эти несколько полей в span или div и скрывайте (открывайте) уже его...
|
Я уже сделал... Не знаю, насколько ЭТО красиво, может можно было проще.... Просто перечислил все поля в вышеприведенном здесь коде и всё работает:
<input type="checkbox" onclick="if(this.checked){document.getElementById('Sex').style.display='none'; document.getElementById('PB2001').style.display='none'; document.getElementById('PN2001').style.display='none'; document.getElementById('PB').style.display='none'; document.getElementById('PN').style.display='none'; document.getElementById('dd').style.display='none'; document.getElementById('mm').style.display='none'; document.getElementById('yy').style.display='none'; } else {document.getElementById('Sex').style.display='inline-block'; document.getElementById('PB2001').style.display='inline-block'; document.getElementById('PN2001').style.display='inline-block'; document.getElementById('PB').style.display='inline-block'; document.getElementById('PN').style.display='inline-block'; document.getElementById('dd').style.display='inline-block'; document.getElementById('mm').style.display='inline-block'; document.getElementById('yy').style.display='inline-block'; } " /> У меня идет проверка через js файл на предмет, заполнено поле или нет... вот так (часть кода) : if (document.entry_form.PB2001.value == "?") { utils.addClassName(f34, 'error'); } else { utils.addClassName(f34, 'ok'); } Теперь мне надо сделать здесь, чтобы была проверка на Чекбокс... т.е. если Чекбокс отмечен, то ничего не происходит, а если нет, то выполняется этот код... т.е. форма не отправляется, пока данное поле не будет заполнено... Пока не понадобился чекбокс все работает и проверяется... |
BLP,
<html> <head> <script> function func() { if (document.getElementById("cbx").checked) { if (document.getElementById("txt1").value == "" || document.getElementById("txt2").value == "") { return alert("незаполнено"); } document.getElementById("form").submit(); } else { document.getElementById("form").submit(); } } </script> </head> <body> <form action="http://javascript.ru" id="form"> <input type="checkbox" id="cbx" onClick="this.checked ? document.getElementById('div').style.display='block' : document.getElementById('div').style.display='none'"> <div style="display:none;" id="div"> <textarea id="txt1"></textarea><textarea id="txt2"></textarea> </div> <input type="button" value="Отправить" onClick="func()"> </form> </body> </html> |
Спасибо, конечно, так лучше, и надеюсь - правильнее )))
|
подскажите,как можно выявить индекс нажатого чекбокса без применения id?
function change(checkbox){ alert(checkbox.indexOf); } <input type="checkbox" onChange="change(this)" />диезов<br> <input type="checkbox" />бемолей как я сделал,выдает ундефинет. |
sotik,
:cray: <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <script> function change(checkbox){ var a = document.querySelectorAll("input[type=checkbox]"); for (var i=0; i<a.length; i++) {if(a[i] == checkbox) return i} return -1 } </script> <input type="checkbox" onclick="alert(change(this))"/>диезов<br> <input type="checkbox" onclick="alert(change(this))"/>бемолей </body> </html> |
Спасибо
|
Цитата:
|
Цитата:
А как в таком случае сделать, чтобы поля в блоке div вместо display: none; становились неактивными (disabled) и их содержимое очищалось (value="") ? То есть при нажатии на галочку поля в блоке div становятся неактивными, и, если они были заполнены - очищаются P.S: Извините. Просто не очень разбираюсь в JS |
<html> <head> </head> <body> <form action="http://javascript.ru" id="form"> <input type="checkbox" id="cbx"> <div id="div"> <textarea id="txt1" disabled></textarea><textarea id="txt2" disabled></textarea> </div> <input type="button" value="Отправить" onClick="func()"> </form> <script> function func() { if (document.getElementById("cbx").checked) { if (document.getElementById("txt1").value == "" || document.getElementById("txt2").value == "") { return alert("незаполнено"); } document.getElementById("form").submit(); } else { document.getElementById("form").submit(); } } document.getElementById("cbx").addEventListener("change", function(e) { document.getElementById('txt1').value =''; document.getElementById('txt2').value =''; document.getElementById('txt1').disabled=!this.checked; document.getElementById('txt2').disabled=!this.checked; }); </script> </body> </html> |
С помощью данного скрипта, скрываются и показываются только два поля: Время публикации: дд.мм.гггг чч:мм, и ID комментария 123 *, а остальные почему то не реагируют.
<form id="anonimus" name="anonimus" value="anonimus" method="POST" action=""> <div class="row uniform"> <div class="6u 12u(medium)"> <input type="checkbox" id="demo-copy" name="demo-copy"> <label for="demo-copy">Опубликовать как запись</label> </div> <div class="6u 12u(medium)"> <input type="checkbox" id="demo-human" name="demo-human"> <label for="demo-human">Опубликовать как комментарий</label> </div> </div> <div class="row uniform"> <div class="6u 12u(xsmall)"> <input type="text" name="token" id="token" placeholder="Ваш токен: 1a2b3c4d5e6f7g8h9l0m *" disabled /> </div> <div class="6u 12u(xsmall)"> <input type="text" name="data_2" id="data_2" placeholder="Время публикации: дд.мм.гггг чч:мм" disabled /> </div> <div class="6u 12u(xsmall)"> <input type="text" name="owner_id" id="owner_id" placeholder="ID пользователя: 123456789 *" disabled /> </div> <div class="6u 12u(xsmall)"> <input type="text" name="komment" id="komment" placeholder="ID комментария 123 *" disabled /> </div> <div class="12u"> <input type="text" name="attachments" id="attachments" placeholder="Ваше вложение: photo123456789_123456789" disabled /> </div> </div> <div class="row uniform"> <div class="6u 12u(xsmall)"> <textarea name="message" id="message" placeholder="Ваше сообщение *" rows="6" disabled ></textarea> </div> <div class="6u 12u(xsmall)" align="center"><p>Цифровой код в нижнем регистре</p> <img src="site_captcha/captcha_an.php" id="captcha_an" class="captcha_an" onclick="document.getElementById('captcha_an').src = 'site_captcha/captcha_an.php?' + Math.random()" alt="Цифровой код"/> </div> </div> <div class="row uniform"> <div class="6u 12u(xsmall)"> <input type ="text" name="captcha_an" placeholder="Цифровой код *" id="captcha_vk" disabled /> </div> <div class="6u 12u(xsmall)"> <input type="text" name="protection" id="protection" placeholder="Антиспам. Не заполнять!"/> </div> </div> <div class="row uniform"> <div class="12u"> <ul class="actions"> <li><input type="submit" class="button special" value="Отправить" /></li> <li><input type="reset" class="button" value="Отмена" /></li> </ul> </div> </div> </form> <script type="text/javascript"> document.getElementById("demo-copy").addEventListener("change", function(e) { document.getElementById("token").value =''; document.getElementById("data_2").value =''; document.getElementById("owner_id").value =''; document.getElementById("komment").value =''; document.getElementById("attachments").value =''; document.getElementById("message").value =''; document.getElementById("captcha_an").value =''; document.getElementById("token").disabled=!this.checked; document.getElementById("data_2").disabled=!this.checked; document.getElementById("owner_id").disabled=!this.checked; document.getElementById("komment").disabled=!this.checked; document.getElementById("attachments").disabled=!this.checked; document.getElementById("message").disabled=!this.checked; document.getElementById("captcha_an").disabled=!this.checked; }); </script> |
timko_ya,
и? |
Блин, про вопрос забыл, из данного кода, скрывается только 2 поля, это Время публикации: дд.мм.гггг чч:мм, и ID комментария 123 *, а остальные почему то не реагируют.
|
рони, Блин, про вопрос забыл, из данного кода, скрывается только 2 поля, это Время публикации: дд.мм.гггг чч:мм, и ID комментария 123 *, а остальные почему то не реагируют.
|
timko_ya,
что не так? <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> </head> <body> <form id="anonimus" name="anonimus" value="anonimus" method="POST" action=""> <div class="row uniform"> <div class="6u 12u(medium)"> <input type="checkbox" id="demo-copy" name="demo-copy"> <label for="demo-copy">Опубликовать как запись</label> </div> <div class="6u 12u(medium)"> <input type="checkbox" id="demo-human" name="demo-human"> <label for="demo-human">Опубликовать как комментарий</label> </div> </div> <div class="row uniform"> <div class="6u 12u(xsmall)"> <input type="text" name="token" id="token" placeholder="Ваш токен: 1a2b3c4d5e6f7g8h9l0m *" disabled /> </div> <div class="6u 12u(xsmall)"> <input type="text" name="data_2" id="data_2" placeholder="Время публикации: дд.мм.гггг чч:мм" disabled /> </div> <div class="6u 12u(xsmall)"> <input type="text" name="owner_id" id="owner_id" placeholder="ID пользователя: 123456789 *" disabled /> </div> <div class="6u 12u(xsmall)"> <input type="text" name="komment" id="komment" placeholder="ID комментария 123 *" disabled /> </div> <div class="12u"> <input type="text" name="attachments" id="attachments" placeholder="Ваше вложение: photo123456789_123456789" disabled /> </div> </div> <div class="row uniform"> <div class="6u 12u(xsmall)"> <textarea name="message" id="message" placeholder="Ваше сообщение *" rows="6" disabled ></textarea> </div> <div class="6u 12u(xsmall)" align="center"><p>Цифровой код в нижнем регистре</p> <img src="site_captcha/captcha_an.php" id="captcha_an" class="captcha_an" onclick="document.getElementById('captcha_an').src = 'site_captcha/captcha_an.php?' + Math.random()" alt="Цифровой код"/> </div> </div> <div class="row uniform"> <div class="6u 12u(xsmall)"> <input type ="text" name="captcha_an" placeholder="Цифровой код *" id="captcha_vk" disabled /> </div> <div class="6u 12u(xsmall)"> <input type="text" name="protection" id="protection" placeholder="Антиспам. Не заполнять!"/> </div> </div> <div class="row uniform"> <div class="12u"> <ul class="actions"> <li><input type="submit" class="button special" value="Отправить" /></li> <li><input type="reset" class="button" value="Отмена" /></li> </ul> </div> </div> </form> <script type="text/javascript"> document.getElementById("demo-copy").addEventListener("change", function(e) { document.getElementById("token").value =''; document.getElementById("data_2").value =''; document.getElementById("owner_id").value =''; document.getElementById("komment").value =''; document.getElementById("attachments").value =''; document.getElementById("message").value =''; document.getElementById("captcha_an").value =''; document.getElementById("token").disabled=!this.checked; document.getElementById("data_2").disabled=!this.checked; document.getElementById("owner_id").disabled=!this.checked; document.getElementById("komment").disabled=!this.checked; document.getElementById("attachments").disabled=!this.checked; document.getElementById("message").disabled=!this.checked; document.getElementById("captcha_an").disabled=!this.checked; }); </script> </body> </html> |
рони,
На моем сайте эта конструкция не работает, почему-то (. Да и здесь, поле Цифровой код не раскрывается |
Цитата:
Цитата:
|
рони,
А все, изменил. Но закрываются и открывается те же инпуты |
Часовой пояс GMT +3, время: 18:47. |