Форум программистов, компьютерный форум CyberForum.ru

jQuery

Войти
Регистрация
Восстановить пароль
 
henry007
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 4
#1

Обработчик событий - jQuery

17.06.2013, 12:28. Просмотров 535. Ответов 2
Метки нет (Все метки)

Есть простая форма а точнее даже таблица в 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("","")?>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2013, 12:28     Обработчик событий
Посмотрите здесь:

jQuery Как убрать обработчик событий
Обработчик значени после # jQuery
jQuery Обработчик не функционирует
Чудаковатый обработчик jQuery
jQuery Обработчик формы
jQuery Универсальный обработчик события
обработчик checkbox jQuery
jQuery Обработчик события change
jQuery Обработчик событий мыши
jQuery Установить обработчик событий перед уже имеющимся
Обработчик события зацикливается jQuery
jQuery Не навешивается обработчик

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Soldado
729 / 720 / 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
странник
792 / 474 / 43
Регистрация: 28.05.2012
Сообщений: 1,507
Записей в блоге: 2
17.06.2013, 15:23     Обработчик событий #3
потому что сначала jQuery события привязываются к элементам, которые уже созданы на странице. На динамически добавленные элементы эти события уже на распространяются. Т.е. их надо объявлять заново.
Yandex
Объявления
17.06.2013, 15:23     Обработчик событий
Ответ Создать тему
Опции темы

Текущее время: 22:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru