使用jQuery更改动态创建的字段

时间:2018-08-03 12:32:32

标签: 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.log(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.log("Kreditbelast: "+kreditbelastning);
                 console.log("Salgspris :"+salgspris);
                 console.log("Kreditmax :"+kreditmax);
                 console.log("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.log("#"+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"
                 });
             }
        }
     });
 });        

});

我做错了什么,我应该怎么做?

1 个答案:

答案 0 :(得分:0)

尝试使用jQuery attribute选择器,如下所示:

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

Learn more about jQuery Selectors

id[中使用]选择器,需要在其之前添加\\

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