Активировать текстовое поле если стоит галочка (запара с именами)
Здравствуйте.
Застопорился на куске кода php работает а вот js работает не корректно Суть такова есть чекбокс и текстовое поле, Если стоит галочка в чекбоксе, то текстовое поле становиться активным в противном случае нет Сколько будет строк заранее неизвестно (их составляет скрипт) поэтому имена выглядят: "#continue1 #agree1", "#continue2 #agree2" и т.д. Не могу заставит скрипт прописывать имена и что бы при этом он работал, т.е. автоматом прописывал имена для каждого отдельного поля $i=1; $material = mysql_query ("SELECT * FROM `material` where `id`=".$zay['id_mater']."") or die (mysql_error()); while ($mat = mysql_fetch_array($material)) { //например выводим много данных echo "<input type='checkbox' name='".$zay['id_mater']."' value='а1' id='agree".$i."'>".$mat['name']."<br>"; //всем по чекбоксу id='agree".$i."' echo "<input onclick='this.select();' type='text' id='continue".$i."' value='Введите число' /><br>"; //тут текстовые поля и id='continue".$i."' $i++; } Вот проблемный скрипт: $(document).ready(function(){ for (var i = 1; i <= 10; i++){ $('#continue+i').prop('disabled', true); $('#agree+i').change(function() { $('#continue+i').prop('disabled', function(i, val) { return !val; }) }); } }) |
$(document).ready(function(){ for (var i = 1; i <= 10; i++){ $('#continue'+i).prop('disabled', true); $('#agree'+i).change(function() { $('#continue'+i).prop('disabled', function(i, val) { return !val; }) }); } }) |
Hekumok,
Все поля стали нактивными и совсем не реагируют на галочки( |
Дай общий признак этим чекбоксам. Оберни каждую пару чекбокс + инпут (хотя не обязательно). Включи мозг наконец.
<div> <input type="checkbox" class="input-toggler" /> <input type="text" disabled="" /> <div> <div> <input type="checkbox" class="input-toggler" /> <input type="text" disabled="" /> <div> <div> <input type="checkbox" class="input-toggler" /> <input type="text" disabled="" /> <div> <script src="http://code.jquery.com/jquery-latest.min.js"></script> <script> $('.input-toggler').click(function(){ var $input = $(this).next('input[type="text"]'); $input.prop('disabled', !$input.prop('disabled')); }) </script> |
danik.js,
На счёт мозга хороший совет, очень плохо знаю js, в процессе так сказать начала изучения, а jquery всегда недолюбливал (библиотека несомненно хорошая, но если, например, со старой версией JQ работает, то если новую закачать то вероятность 90%, что работать не будет) И не боясь показаться дебилом спрошу что означает $ ? |
<script type="text/javascript" src="http://yandex.st/jquery/1.7.2/jquery.min.js"></script> <script> $(document).ready(function(){ $('input[id^="agree"]').each(function(){ var nextInp = $(this).next().next('input[id^="continue"]'); nextInp.attr('disabled',true); $(this).change(function() { if($(this).attr('checked')){nextInp.removeAttr('disabled'); } else nextInp.attr('disabled',true); //Еще коды... }); }); }); </script> <input type="checkbox" name="agree1" value="а1" id="agree1">".$mat["name"].<br> <input onclick="this.select();" type="text" id="continue1" value="Введите число" /><br> <input type="checkbox" name="agree2" value="а2" id="agree2">".$mat["name"].<br> <input onclick="this.select();" type="text" id="continue2" value="Введите число" /><br> <input type="checkbox" name="agree3" value="а3" id="agree3">".$mat["name"].<br> <input onclick="this.select();" type="text" id="continue3" value="Введите число" /><br> |
Цитата:
То же самое, но без jQuery (возможно не будет работать в IE8): <div> <input type="checkbox" class="input-toggler" /> <input type="text" disabled="" /> <div> <div> <input type="checkbox" class="input-toggler" /> <input type="text" disabled="" /> <div> <div> <input type="checkbox" class="input-toggler" /> <input type="text" disabled="" /> <div> <script> (function(){ var togglers = document.querySelectorAll('.input-toggler'); var handler = function() { var input = this.parentNode.querySelector('input[type="text"]'); input.disabled = !this.checked; }; for (var i = 0; i < togglers.length; i++) { togglers[i].onchange = handler; }; })(); </script> |
Цитата:
|
Цитата:
|
danik.js,
Deff, Спасибо за помощь, буду сейчас сидеть разбирать коды по ниточкам=). Хорошие коды, а мне есть куда стремиться |
Часовой пояс GMT +3, время: 03:42. |