在使用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"
});
}
}
});
});
});
我做错了什么,我应该怎么做?
答案 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);