Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
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
странник
722 / 404 / 14
Регистрация: 28.05.2012
Сообщений: 1,287
Записей в блоге: 1
17.06.2013, 15:23     Обработчик событий
  #3
потому что сначала jQuery события привязываются к элементам, которые уже созданы на странице. На динамически добавленные элементы эти события уже на распространяются. Т.е. их надо объявлять заново.
Yandex
Объявления
17.06.2013, 15:23
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
jQuery обработчик checkbox
Добрый день, Есть форма с checkboxами.(у каждого из них свой id) Если хоть один из них отмечен, то нужно сделать кнопку отправки формы видимой. Есть код обработки ...
jQuery 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 sendxt 03.06.2014 16:18
jQuery Как остановить все <audio> на странице используя один обработчик событий ?
Попробовал $('audio').pause(); но эффекта ноль. Ещё $('audio').trigger('stop'); но тут тоже облом. Вообщем народ кто знает, буду признателен.
jQuery T15 07.08.2013 21:10
1С Битрикс Обработчик событий
Есть во такой код: <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); $count = 0; $arSelect = Array("ID", "NAME", "PREVIEW_TEXT", "PROPERTY_NUMBERREPLACE", "DETAIL_TEXT");...
1С Битрикс bratva1990 11.05.2013 19:54
C# Обработчик событий
Есть панель с контролами, каждый контрол имеет свой номер. Есть рандомное число (int temp). Не могу разобраться с обработчиком. Нужно чтобы по нажатию на контрол имеющий номер рандомного числа...
C# для начинающих vladimir8686 12.03.2013 18:05
jQuery Обработчик клика
1. Вывести динамический блок в место куда направлен указатель мыши - сделано 2. При убирании мыши, через 1.5 сек блок исчезает - сделано 3. При нажатии в любой точке страницы блок исчезает - как? ...
jQuery KFan 13.11.2012 19:39
jQuery Как убрать обработчик событий
Здравствуйте. Мне нужен свой обработчик события click для кнопок jcarousel. Эти кнопки являются div.jcarousel-next и div.jcarousel-prev. Для начала хочу отменить уже назначенный обработчик. Пишу...
jQuery oke11o 25.11.2011 12:17
JavaScript Обработчик событий
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Лабораторная работа...
JavaScript Ocha 26.11.2010 15:24
Опции темы

Текущее время: 05:50. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.