Удалить и создать элемент по клику
Только недавно начал изучать JavaScript, столкнулся с проблемой.
Есть страница. Пароль изначально задается в поле type="text", по клику на ссылку "скрыть" поле становится password, с возможностью вернуть все, как было. Как я понял из чтения форумов, в IE с этим проблемы. И было решено создавать/удалять инпуты. Проблема в том, что по первому клику все происходит как надо, а вот при повторном клике не происходит ничего. Где я ошибся? <script> $('#hide').click(function() { $('.on').append('<input type="password" value="" id="pass" class="password"><span class="grey_str"></span><a href="#" class="hide" id="show">Показать</a>'); $("#txt").keyup(function () { var value = $(this).val(); $("#pass").val(value); }).keyup(); $('#txt, #hide, #grey_1').remove(); }); $('#show').click(function() { $('.on').append('<input type="text" value="" id="txt" class="password"><span class="grey_str" id="grey_1"></span><a href="#" class="hide" id="hide">Скрыть</a>'); $("#pass").keyup(function () { var value = $(this).val(); $("#txt").val(value); }).keyup(); $('#pass, #show, #grey_2').remove(); }); </script> Помогите, пожалуйста. |
Arne, вот пример
<!DOCTYPE HTML> <html> <head> </head> <body> <input type="password" id="password-hide"> <input type="text" id="password"> <input type="button" id="show-hide" value="show/hide"> <script> var bt = document.getElementById("show-hide"); var inp_hide = document.getElementById("password-hide"); var inp = document.getElementById("password"); function show_hide(param) { var show_state = param.show; cl(); param.bt.onclick = cl; function cl (){ if(show_state) show(); else hide(); } function show() { param.inp_hide.style.display = "none"; param.inp.value = param.inp_hide.value; param.inp.style.display = ""; show_state = false; } function hide() { param.inp_hide.style.display = ""; param.inp_hide.value = param.inp.value ; param.inp.style.display = "none"; show_state = true; } } show_hide({ show: false, inp_hide: inp_hide, inp:inp, bt:bt }); </script> </body> </html> |
cyber,
с display:none/block я сам разобрался, но программист от меня требует именно удалять-добавлять блоки. Ему один инпут нужен, а не два на выходе. А вот тут и вышла засада :( |
Цитата:
<!DOCTYPE HTML> <html> <head> </head> <body> <div id="container"> </div> <input type="button" id="show-hide" value="show/hide"> <script> var bt = document.getElementById("show-hide"); var cont = document.getElementById("container"); function show_hide(param) { var show_state = param.show, current; append(); param.bt.onclick = append; function append(){ // тут можно задать нужные парметры инпуту var inp = document.createElement("input"); if(show_state) inp.type = "text"; else inp.type = "password"; if(current) { inp.value = current.value; container.removeChild(current); } param.container.appendChild(inp); current = inp; show_state = !show_state; } }; show_hide({ show: false, container:cont, bt:bt }); </script> </body> </html> |
cyber,
у программиста проблема с передачей данных из поля на сервер. Помогло. Спасибо большое) |
Цитата:
|
Часовой пояс GMT +3, время: 14:23. |