Php 表单提交后显示/隐藏div+;基于复选框的输入字段?

Php 表单提交后显示/隐藏div+;基于复选框的输入字段?,php,jquery,Php,Jquery,显然我做错了什么。我有一个简单的表单,它用一堆选择的变量(输入字段值)重新加载页面。现在,我想根据复选框隐藏和显示一个输入字段。这个输入字段在一个span元素中,所以我只是隐藏/显示span元素 我的这部分工作的人 // Show/Hide div span $('#showDiv').click(function () { $("#element_span_with_input_field").toggle(this.checked); if (!$('#element

显然我做错了什么。我有一个简单的表单,它用一堆选择的变量(输入字段值)重新加载页面。现在,我想根据复选框隐藏和显示一个输入字段。这个输入字段在一个span元素中,所以我只是隐藏/显示span元素

我的这部分工作的人

 // Show/Hide div span
  $('#showDiv').click(function () {
    $("#element_span_with_input_field").toggle(this.checked);
     if (!$('#element_span_with_input_field').is(":visible")) {
         alert("empty input field");
        $('#inputfield').val('');
      }
 });
现在,通过一个简单的php$\u请求,我可以检查复选框是否为checked=checked

<input <?php if (isset($_REQUEST['showDiv']) && ($_REQUEST['showDiv'] == '1')) echo 'checked="checked"'; ?> type="checkbox" value="1" name="showDiv" id="showDiv"  />Show Div

我的问题是:当我取消选中showDiv复选框时,当我提交表单(而且showDiv变量甚至没有设置??)时,div会变得可见。

在DOM就绪期间检查复选框是否已预先选中(根据您的PHP设置
checked=“checked”
属性),您将查找
是否已选中
设置:

$(document).ready(function() {
    if ($("#showDiv").is(':checked')) {
        $('#element_span_with_input_field').show();
    } else {
        $('#element_span_with_input_field').hide();
    }
});
正如您所说的,您的代码的其余部分应该可以工作。请记住,如果未选中
复选框
,则在
$\u POST
$\u REQUEST
中不会有一个以其名称命名的变量。确实,如果它不存在(或者是<代码>空< /代码>),请考虑它<代码> false < /C> > < /p> 作为旁注,您可能需要稍微调整另一个块:

$(document).ready(function() {
    $('#showDiv').click(function () {
        $("#element_span_with_input_field").toggle($(this).is(":checked")); // use jquery
        if (!$(this).is(":checked")) { // eval the checkbox state instead
            $('#inputfield').val('');
        }
    });
});

您是否在浏览器的控制台中看到任何错误?是否要检查“已选中”属性。。。让我看看,jquery示例在哪里。。。尝试
if($(“#showDiv”).is(':checked')){
。我对您的流程或表单提交的位置有点不清楚,但我认为这正是您所要寻找的。@难以置信的是,取消选中并提交表单似乎是我的问题。#element_span_with_input_字段仍然显示??当您使用复选框“unchecked”提交时,它将不会显示在$u POST或$u请求中超级全局。只有当它们被“选中”时,它们才会提交,并且具有您为它们设置的值。因此,如果您说您取消选中该框,并提交表单…这意味着它没有值,它将不存在,因此它认为该框应该是“打开和可见的”。如果我正确阅读了您的流。并且由于您有
if($(“#showDiv”).val()=='1'){
…它在html中总是有那个值(这就是为什么你要检查
:而是检查了
。@IncredibleHat,你确实是对的,我。当复选框被选中时,它只有值1,而且它确实不存在(我认为它等于false/0)。所以我能很容易地解决这个问题吗?Tx确实很简单。是(':checked')))工作正常。将在我的实际代码中加入你的调整。我必须承认我跳过了“这个”通常只在php类中退出。javascript和jquery中有两个“this”。这可能会让人困惑,但通常都是一样的。如果我在jquery块或标准中,我只是尝试保持它的一致性。但有时“this”在回调函数中不起作用!所以你需要$(this)
$(document).ready(function() {
    $('#showDiv').click(function () {
        $("#element_span_with_input_field").toggle($(this).is(":checked")); // use jquery
        if (!$(this).is(":checked")) { // eval the checkbox state instead
            $('#inputfield').val('');
        }
    });
});