Изменить динамические созданные поля с помощью jquery

Мне нужна базовая помощь по работе с jQuery, поскольку он все еще нов для меня, и я пока не могу осмыслить его.

У меня есть динамически созданный флажок и поле ввода, которыми я хотел бы управлять через jQuery.

Они есть:

<input name = "e19[i<?php echo $taeller-1;?>]" id = "e19[i<?php echo $taeller-1;?>]" type = "checkbox" class = "check_kredit" <?php echo $checked = $foo['e19'] == '1' ? "checked=\"checked\"" : "";?>  value = "1" onclick = "postmtjek(this, '<?php echo $pl;?>', '<?php echo $res['ordre'];?>', '<?php echo $res['rev'];?>', '<?php echo $foo['e28']; ?>', '<?php echo $taeller-1;?>');document.getElementsByName('e20[]')[<?php echo $taeller-1;?>].value = this.checked ? '<?php echo date('d-m-Y');?>' : '';setOBdato(document.getElementsByName('e20[]')[<?php echo $taeller-1;?>]);" data-pris = "<?php echo $foo['eStaalpris'];?>" data-datofelt = "e20[]"/>
<input type = "text" readonly class = "listform" style = "width:60px;" id = "e20[]" name = "e20[]" value = "<?php echo sqltoalmdatetom($foo['e20']); ?>">

В основном это дает флажку имена e19 [i0], e19 [i1], e19 [i2], e19 [i3] и так далее. Вход должен называться e20 [] [0], e20 [] [1], e20 [] [2], e20 [] [3] и так далее.

Когда флажок установлен, мне нужно проверить, не является ли случай слишком дорогим по сравнению с тем, на что застрахован заказчик. Если это слишком дорого, и флажок, и поле ввода должны быть сняты, в противном случае следует установить флажок, а на входе должна отображаться сегодняшняя дата.

Моя проблема в том, что я не могу найти правильное имя в jQuery, чтобы я мог изменить 2 поля.

Мой jQuery похож на этот

$(document).ready(function() {

 var kreHint = $("#kreHint");
 var tekst_kredit_over_max = "Den samlede kreditbelastning inkl. denne sag overstiger kundens maksimale kreditbeløb. Det samlede beløb lyder på ";
 var tekst_kredit_under_max = "Aktuel kreditvurdering ";

 $(".check_kredit").click(function() {       //Class selector
    var chkbox = $(this).attr('name'); //<--- This returns the correct name of the checkbox
     console.info(chkbox);

 var salgspris = $(this).data("pris"); //Henter data-pris (DOM) property, i dette tilfælde indeholdende etapens pris
     $.get("/getkredit.php?k=<?=$res['kunde_id']?>", function(response){
         if (!(response == null)) {
             var kreditbelastning = parseInt(response.kreditbelastning);
             var kreditmax = parseInt(response.kreditmax);
             var samlet_kreditbelastning = kreditbelastning + salgspris;
                 console.info("Kreditbelast: "+kreditbelastning);
                 console.info("Salgspris :"+salgspris);
                 console.info("Kreditmax :"+kreditmax);
                 console.info("Samlet kreditbelast :"+samlet_kreditbelastning);

             if (kreditmax > samlet_kreditbelastning) {
                 kreHint.html(tekst_kredit_under_max + samlet_kreditbelastning); //Skriver tekst
             } else {
                 kreHint.html(tekst_kredit_over_max + samlet_kreditbelastning); //Skriver tekst

                 console.info("#"+chkbox);
                 $("#e19[i1]").prop('checked', false); //<--- this should be dynamical, not even this hardcorded name/id works???

                 $("#kreHint, #r599b").css({
                     "color" : "red",
                     "font-size" : "16px",
                     "font-weight" : "bold"
                 });
             }
        }
     });
 });        

});

Что я делаю не так и что мне делать вместо этого?

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
0
33
1

Ответы 1

Попробуйте селектор jQuery attribute, как показано ниже:

$("[name='" + chkbox + "']").prop('checked', false);

Узнать больше о селекторах jQuery

Используя селектор id с [ или ], вам необходимо добавить \\ перед ним.

//$("#e19\\[i1\\]").prop('checked', false);
$("#" + chkbox.replace("[", "\\[").replace("]", "\\]")).prop('checked', false);

Хорошо, это сработало, но почему? Я тоже пробовал это: var chkboxobj = $ (this); var tmpnavn = "#" + chkboxobj.attr ('id'); console.info (tmpnavn); $ (tmpnavn) .prop ('проверено', ложь); но это тоже не сработало.

Mhystique 03.08.2018 14:48

Потому что, когда вы используете #, он найдет элемент с id, равным этому значению. Но у вашего элемента нет id как e19[i0], но это атрибут name.

Karan 03.08.2018 14:49

У меня есть имя и идентификатор, и это одно и то же: name = "e19 [i <? Php echo $ taeller-1;?>]" Id = "e19 [i <? Php echo $ taeller-1;?> ] ". ЕСЛИ я изменил [имя на [id, он все еще работает ?????

Mhystique 03.08.2018 14:55

и как мне ввести значение в поле ввода?

Mhystique 03.08.2018 14:57

насчет ввода я изменил его идентификатор на этот: <input type = "text" readonly class = "listform" style = "width: 60px;" id = "e20 [<? php echo $ taeller-1;?>]" name = "e20 []" value = "<? php echo sqltoalmdatetom ($ foo ['e20']);?>">. Тогда я могу поймать это и манипулировать им.

Mhystique 03.08.2018 15:01

Для входа $("[id='" + chkbox.replace("e19[i","e20[") + "']").val(new Date())

Karan 03.08.2018 15:08

Выяснилось, что я могу сделать то же самое, что и для текстового поля, точно так же, как флажок: $ ("[id = '" + datefield + "']"). Val (''); если мне нужно, чтобы он был пуст. Но я все еще не понимаю, почему я не могу это сделать $ ("# e19 [i1]"). Prop ('checked', false); для флажка, когда у меня есть идентификатор.

Mhystique 07.08.2018 10:50

Как вы можете видеть в моем ответе, селектор attribute использует [] для выбора значений. Таким образом, jquery будет рассматривать [ или ] как часть selector, а не как часть id. Если вы хотите использовать его в id selector, вы можете добавить к нему \\ , как $("#e19\\[i1\\]").prop('checked', false); , тогда он будет работать.

Karan 08.08.2018 07:18

Другие вопросы по теме