【发布时间】:2018-07-15 20:56:04
【问题描述】:
显然我做错了什么。我有一个简单的表单,它用一堆选定的变量(输入字段值)重新加载页面。现在,我喜欢根据复选框隐藏和显示我的输入字段之一。这个输入字段在一个 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 $_REQUEST 我可以检查复选框是否已选中=已选中
<input <?php if (isset($_REQUEST['showDiv']) && ($_REQUEST['showDiv'] == '1')) echo 'checked="checked"'; ?> type="checkbox" value="1" name="showDiv" id="showDiv" />Show Div
复选框有效。
现在我认为这应该可以将显示/隐藏 div 设置为就绪
if ($("#showDiv").val() == '1') {
$('#element_span_with_input_field').show();
//$('#element_span_with_input_field').css({ visibility: "visible"});//also tried
} else {
$('#element_span_with_input_field').hide();
}
我的问题:当我取消选中 showDiv 复选框时,当我提交表单时 div 变得可见(甚至没有设置 showDiv 变量??)
【问题讨论】:
-
您是否在浏览器的控制台中看到任何错误?
-
您想检查选中的属性...让我看看,那个 jquery 示例在哪里...试试
if ($("#showDiv").is(':checked')) {。我对您的流程或表单提交的位置有点不清楚,但我认为这就是您想要的。 -
@IncredibleHat 取消选中并提交表单似乎是我的问题。 #element_span_with_input_field 仍然显示??
-
当您使用“未选中”复选框提交时,它不会显示在 $_POST 或 $_REQUEST 超全局中。只有当它们被“检查”时,它们才会提交,并且使用您为它们设置的值。因此,如果您说您正在取消选中该框并提交表单......这意味着它不会有一个值,它不会存在,所以它认为该框应该是“开放且可见的”。如果我正确地阅读了您的流程。并且由于您有
if ($("#showDiv").val() == '1') {...它始终在 html 中具有该值(这就是您检查:checked的原因)。 -
@IncredibleHat,嗯,你确实是对的,我。当复选框被选中时,它的值只有 1,实际上它不存在(我认为它等于 false/0)。那么我可以轻松解决这个问题吗??