我一直在网上寻找一个多小时,没有出现任何事情。我得到了一些简单的复选框,带有一个小样子来设计它们,经典的隐藏属性和带有样式的标签。没有什么花哨。 我想要的是通过POST发送这些复选框值/检查状态以进行处理。 问题是每当我用jQuery,onClick更改这些值时,检查器会显示更改,但在POST中输入不再存在。 我已经尝试过设置"已检查" $ .prop()的属性。它适用于检查员,但没有在POST上工作。 然后我改为使用值,将所有复选框设置为"选中"并使用jQuery将值从1更改为0并返回。 检查员显示值的变化,但POST没有显示任何内容。
这里是HTML表单:
<form action="./ajax/process.php" enctype="multipart/form-data" method="post" id="admEmailParameteres1">
<input type="hidden" name="procesare" value="adm-process-parameters">
<input type="checkbox" id="sendConfEmailToClient" name="sendConfEmailToClient" value="<?= ($options['email_conf'] == 1 ? 1:0) ?>" class="hidden" checked>
<label for="sendConfEmailToClient" class="as-link tip label" onClick="toggleCheckSimple(this)" title="Trimite email de confirmare catre client la plasarea comenzii."><i class="fa fa-check label-check <?= ($options['email_conf'] == 1 ? 'active':'') ?>"></i> Client - email de confirmare la plasarea comenzii</label><br>
<input type="checkbox" id="sendAdvConfEmailToClient" name="sendAdvConfEmailToClient" value="<?= ($options['email_conf_sumar'] == 1 ? 1:0) ?>" class="hidden" checked>
<label for="sendAdvConfEmailToClient" class="as-link tip label" onClick="toggleCheckSimple(this)" title="Adauga si sumarul comenzii la email-ul de confirmare, trimis catre client la plasarea comenzii."><i class="fa fa-check label-check <?= ($options['email_conf_sumar'] == 1 ? 'active':'') ?>"></i> Client - adauga sumarul la email, la plasarea comenzii</label><br>
<input type="submit" class="btn btn-sm btn-success mb-5 " value="Salveaza modificarile" data-form="admEmailParameteres">
</form>
这是JS代码:
function toggleCheckSimple(el){
$(el).find('.label-check').toggleClass('active');
var trg = $(el).attr('for');
if($('#'+trg).val() == 1){
$('input[name="'+trg+'"]').val(0);
}else{
$('input[name="'+trg+'"]').val(1);
}
}
在PHP方面,如果我打电话:
echo '<pre>';
print_r($_POST);
echo '</pre>';
如果使用jQuery更改了复选框,则不存在复选框。如果你不碰他们,他们就在那里。非常奇怪,因为我不是一个初学者。无法解决这个问题。
答案 0 :(得分:1)
<label for="myId"></label>
<input type="checkbox" id="myId">
当您为标签指定另一个元素的id为for
属性时,如果用户点击该标签,它将表现为用户点击了另一个元素。通过这种方式,您可以单击标签切换复选框,选择单选按钮或将焦点置于关联的文本字段。将此逻辑作为javascript方法的一部分是不必要的。
参考。 https://html.spec.whatwg.org/multipage/forms.html#the-label-element
答案 1 :(得分:0)
复选框始终需要html中的值。但是,如果选中该复选框,此值将仅发送给php。因此,请从代码中删除<?= ($options['email_conf'] == 1 ? 1:0) ?>
,并仅在$ options ['email_conf'] == 1时设置checked
属性。
这将是您的代码:
<input type="checkbox" id="sendConfEmailToClient" name="sendConfEmailToClient" value="1" class="hidden" <?= echo ($options['email_conf'] == 1) ? 'checked' : ''; ?>>