在POST

时间:2017-11-14 14:47:32

标签: jquery html

我一直在网上寻找一个多小时,没有出现任何事情。我得到了一些简单的复选框,带有一个小样子来设计它们,经典的隐藏属性和带有样式的标签。没有什么花哨。 我想要的是通过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更改了复选框,则不存在复选框。如果你不碰他们,他们就在那里。非常奇怪,因为我不是一个初学者。无法解决这个问题。

2 个答案:

答案 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' : '';  ?>>