Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery显示和隐藏div问题_Jquery - Fatal编程技术网

jquery显示和隐藏div问题

jquery显示和隐藏div问题,jquery,Jquery,我创建了一个可编辑表单,允许用户编辑他们的个人资料信息。 此表单可以保存和修改,因此我需要能够在用户进行操作时保存更新。 这工作正常 表单很长,因此在某些部分中,我使用jquery显示/隐藏字段,具体取决于之前输入的是或否选择。 这同样有效,但如果在表单重新提交时选择并保存了无线电输入,jquery将再次隐藏详细信息字段 因此,我需要的是一些帮助来修改下面的jquery代码,这样,如果没有选择单选按钮,那么details div就会隐藏,但是如果选择了Yes选项并保存了它,那么当表单重新提交时它

我创建了一个可编辑表单,允许用户编辑他们的个人资料信息。 此表单可以保存和修改,因此我需要能够在用户进行操作时保存更新。 这工作正常

表单很长,因此在某些部分中,我使用jquery显示/隐藏字段,具体取决于之前输入的是或否选择。 这同样有效,但如果在表单重新提交时选择并保存了无线电输入,jquery将再次隐藏详细信息字段

因此,我需要的是一些帮助来修改下面的jquery代码,这样,如果没有选择单选按钮,那么details div就会隐藏,但是如果选择了Yes选项并保存了它,那么当表单重新提交时它会自动打开!谢谢

$("#diet-details").hide();
$("input[name=diet]").click(function() {
    if ( $("#diet1").attr('checked'))
        $("#diet-details").hide();

    if ( $("#diet2").attr('checked'))
        $("#diet-details").show();
});      

您可以将显示/隐藏条件传递给切换函数,而不是总是在开头隐藏diet details div,检查是否选中了diet1选项,并根据该选项显示(或隐藏)

$(function() {
  $('#diet-details').toggle($("#diet1").is(':checked'));

  $("input[name=diet]").click(function() {
    $('#diet-details').toggle($("#diet1").is(':checked'));
  }); 
});

一种方法是:

(function(){
    var $d1 = $("#diet1"),
        $d2 = $("#diet2"),
        $details = $("#diet-details");

    !$d2.prop('checked') && $details.hide();

    $("input[name=diet]").click(function() {
        $d1.prop('checked') && $details.hide();
        $d2.prop('checked') && $details.show();
    });
})();  

设置初始状态的另一种方法:

function checkem() {
  if ($("#diet1").prop('checked')) $("#diet-details").hide();
  if ($("#diet2").prop('checked')) $("#diet-details").show();
}
$("input[name=diet]").click(function () {
  checkem();
});
checkem(); //sets initial state based one current
测试小提琴:

如果您希望显示两个选项均未选中,则:

function checkem() {
  if ($("input[name=diet]:checked").length) {
    $("#diet-details").hide();
  } else {
    $("#diet-details").show();
  }
}
$("input[name=diet]").change(function () {
  checkem();
});
checkem(); //sets initial state based one current

您应该将您的状态存储在会话或本地存储中,或者使用AJAX提交表单(但如果您返回该页面,也会重置表单,因此在任何情况下都要存储您的输入状态。)
attr('checked')
返回未定义。仅供参考,因为它是“未选择任何单选按钮,详细信息div隐藏”-与您的代码冲突,因为#diet1 check会隐藏该区域…您可能还需要
。更改
event@user579984很高兴我能帮忙!