Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > > >
Восстановить пароль Регистрация

Ответ Создать новую тему
 
henry007
Новичок
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 4
17.06.2013, 12:28     Обработчик событий
  #1
Есть простая форма а точнее даже таблица в 3 колонки в центральной колонке есть textarea чуть ниже есть чекбокс который дает возможность создать tr с 3 колонками если отмечен и с 2 если не отмечен, и кнопка для отправки через ajax всего этого дела, работаю с live проблема в том, что чекбоксы которые загружаются через ajax абсолютно не меняют значения, что они отмечены что нет, получаю undefined если самый первый, созданный заранее checkbox отмечен и соответственно checked если отмечен.
Код:
Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?   
    if ($_POST['check']=="undefined") {
        $a =    "<tr><td style='border: 1px solid black;'></td>".
                "<td style='border: 1px solid black;'><textarea class='inputtextarea' name='form_textarea_86'></textarea>".
                "<a id='addst8' href='#' >"."+"."</a></td>".
                "</tr>";
        echo json_encode(array('a' => $a));
    }
    else{
        $a =    "<tr><td style='border: 1px solid black;'></td>".
                "<td style='border: 1px solid black;'><textarea class='inputtextarea' name='form_textarea_86'></textarea>".
                "<a id='addst8' href='#' >"."+"."</a></td>".
                "<td style='border: 1px solid black;'></td></tr>";
        echo json_encode(array('a' => $a));
    }
    
?>
Код JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script>  
        $(document).ready(function(){
            $('#addst8').live("click",function(){  
                $.ajax({  
                    type: "POST",  
                    url: "array.php",
                    dataType: "json",
                    data: "check="+$("#check").attr("checked"),
                    success: function(data){
                        alert($("#check").attr("checked"));
                        $("#st8 tr:last-child").after(data.a);
                    }  
                });  
                return false;  
            });
              
        });  
</script>
И сам шаблон таблички
Код HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
<table width="100%" border="0" style="border-collapse: collapse;" id="st8"> 
  <tbody> 
    <tr><td align="center" style="border: 1px solid black;"> 
        <h4 align="center"><b>№ статьи</b></h4>
       </td><td align="center" style="border: 1px solid black;"> 
        <h4><b>Наименование статьи</b></h4>
       </td><td style="border: 1px solid black;"> 
        <h4 align="left"><b>Документ</b></h4>
       </td></tr>
   
    <tr><td style="border: 1px solid black;"><b>Ст. 8</b></td><td style="border-image: none;" colspan="2"> 
        <br />
       <b>В рамках общей информации об управляющей организации раскрытию подлежат следующие сведения:</b></td></tr>
   
    <tr><td valign="top" style="border: 1px solid black;"></td>         <td valign="top" style="border: 1px solid black;"><?=$FORM->ShowInput('st8')?><a id="addst8" href="#" >+</a> 
        <br />
       Отдельное поле для файла ?<input type="checkbox" id="check" /></td>   <td valign="top" style="border: 1px solid black;" colspan="1" id="row"></td></tr>
   </tbody>
 </table>
<br />
 <?=$FORM->ShowSubmitButton("Сохранить","Сохранить")?> <?=$FORM->ShowApplyButton("","")?>
AdAgent
Объявления
17.06.2013, 12:28
Soldado
Форумчанин
719 / 710 / 4
Регистрация: 28.06.2012
Сообщений: 1,318
Записей в блоге: 4
17.06.2013, 15:15
  #2
Неправильно использовать один и тот же id несколько раз - id='addst8'. Заменяйте на класс и элементы ищите относительно кликнутого элемента.
Пора отказываться от метода live как устаревшего (начиная с jQuery 1.9 - не поддерживается). Используйте on делегированно для привязки событий к новым элементам. Правильно будет таблице задать свой id, например, "#table" тогда
Код JavaScript
1
$('#table').on("click",".faddst8", function(){ 
Для динамических (изменяемых) атрибутов лучше использовать не attr, а pop
Лучше отказаться от undefined. Проверяйте отмеченность так
Код JavaScript
1
2
3
4
5
if ($("#check").is(":checked")) {
var attrV=1;
else{
var attrV=0;
}
и в ajax передавайте переменную attrV
Код JavaScript
1
data: "check="+attrV,
}
В PHP соответственно проверяйте 0 или 1

да и зачем два раза писать
Код PHP
1
echo json_encode(array('a' => $a));
ведь в любом случае массив отправляете, вынесите его из условий
Donald28
странник
726 / 408 / 17
Регистрация: 28.05.2012
Сообщений: 1,298
Записей в блоге: 2
17.06.2013, 15:23     Обработчик событий
  #3
потому что сначала jQuery события привязываются к элементам, которые уже созданы на странице. На динамически добавленные элементы эти события уже на распространяются. Т.е. их надо объявлять заново.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Ответов Автор Дата
jQuery обработчик checkbox
Добрый день, Есть форма с checkboxами.(у каждого из них свой id) Если хоть один из них отмечен, то нужно сделать кнопку отправки формы видимой. Есть код обработки ...
jQuery 2 AlwaysFree 19.06.2014 14:02
jQuery Обработчик формы
Ребята что не так тут может быть? <form action="" method="post" class="form"> <div class="field-left"> <div class="field-1"> <input type="text" name="name" placeholder='•...
jQuery 9 sendxt 03.06.2014 16:18
jQuery Чудаковатый обработчик
Учу JS по учебнику, в нем есть задания, и в решении к заданию были такие строчки: function startResize() { $(document).on('mousemove.resizeable', onDocumentMouseMove); ...
jQuery 1 Destank 12.07.2013 19:58
jQuery привязать обработчик события
Есть кнопка на нажатие привязываю обработчик: $(document).ready(function(){ $('#bn_start').click(function(){ $.ajax({ url:'parse', cache:...
jQuery 1 AndreyDyakonov 08.06.2013 10:35
jQuery Обработчик не функционирует
$('<div id="navigation_blob"></div>').css({ width:0, height:$("#navigation li:first a").height()+10 }).appendTo("#navigation"); $("#navigation a").hover(function(){...
jQuery 1 Zooommer 27.01.2013 23:07
jQuery Как убрать обработчик событий
Здравствуйте. Мне нужен свой обработчик события click для кнопок jcarousel. Эти кнопки являются div.jcarousel-next и div.jcarousel-prev. Для начала хочу отменить уже назначенный обработчик. Пишу...
jQuery 5 oke11o 25.11.2011 12:17
jQuery не работает обработчик события
в результате выполнения функции $('#r_1lvl').append('<div class="re"></div>') получаю: <div id="r_1lvl"> <div class="re"></div> </div> Есть функция: $('.re').dblclick(function(){
jQuery 1 Mefen 18.09.2011 17:39
jQuery помогите написать обработчик
Здравствуйте. Помогите исправить ошибку. Обработчик берет div блок, у которого display: none, и вставлять его в другой div блок (у которого настроены стили, и который находится в нужном мне месте)....
jQuery 1 oke11o 05.09.2011 10:29
Опции темы

Текущее время: 13:31. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.