【问题标题】:How to auto submit saved/repopulated checkboxes using javascript如何使用javascript自动提交保存/重新填充的复选框
【发布时间】:2015-02-25 00:25:40
【问题描述】:

谁能告诉我如何在页面重新加载时自动提交我保存/重新填充的复选框选项?一旦重定向到页面然后再次返回,复选框就会正确重新填充,但我不确定如何自动提交结果。

表格

<form id="form" method="post" action="">
<input type="checkbox" name="2kandunder" class="checkbox" id="1" <?=(isset($_POST['2kandunder'])?' checked':'')?>/> $2000 And Under<br>

<input type="checkbox" name="2kto4k" class="checkbox" id="2" <?=(isset($_POST['2kto4k'])?' checked':'')?>/> $2001 To $4000<br>
</script>    
<input type="checkbox" name="4kandup" class="checkbox" <?=(isset($_POST['4kandup'])?' checked':'')?>/> $4001 And Up<br></td>

选中框时自动提交的javascript。我试图将此代码实现到下面我用来重新填充选中复选框的 javascript 中,但无法使其正常工作。

<script type="text/javascript">  
$(function(){
 $('.checkbox').on('change',function(){
    $('#form').submit();
    });
});

在用户单击收藏按钮并被带到 php 脚本然后重定向回此页面后,我使用 javascript 重新填充复选框。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://cdn.jsdelivr.net/jquery.cookie/1.4.0/jquery.cookie.min.js"></script>

<script>
  $(":checkbox").on("change", function(){
    var checkboxValues = {};
    $(":checkbox").each(function(){
      checkboxValues[this.id] = this.checked;
    });
    $.cookie('checkboxValues', checkboxValues, { expires: 7, path: '/' })
  });

  function repopulateCheckboxes(){
    var checkboxValues = $.cookie('checkboxValues');
    if(checkboxValues){
      Object.keys(checkboxValues).forEach(function(element) {
        var checked = checkboxValues[element];
        $("#" + element).prop('checked', checked);
      });
    }
  }

  $.cookie.json = true;
  repopulateCheckboxes();



</script>

php

if (isset($_POST["2kandunder"])) {
$arguments[] = "`2kandunder` = 'yes'";
}
if (isset($_POST["2kto4k"])) {
 $arguments[] = "`2kto4k` = 'yes'";
}
if (isset($_POST["4kandup"])) {
$arguments[] = "4kandup = 'yes'";
}
if(!empty($arguments)) {
$str = implode(' AND ',$arguments);

$qry = "SELECT favorite_id, id, venue, imageurl FROM venue_ads WHERE `showingads` = 'yes' AND " . $str . "";


$result = $conn->query($qry);



 if ($result->num_rows > 0)

复选框正确重新填充,但不提交任何内容。如何使重新填充 javascript 提交重新填充的复选框?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    我可能误读了您的问题,因为您似乎可以通过提交表单来跟踪您对repopulateCheckboxes() 的呼叫,如下所示:

    repopulateCheckboxes();
    document.getElementById('form').submit();
    

    也许你可以举一个 jsbin 的例子?

    【讨论】:

    • 这基本上正是我正在寻找的,我认为它肯定会起作用,但它会导致页面的某些部分出现故障,然后在大约 5 秒后进入“此页面无法显示”页面闪烁?
    • 把你的代码放在 jsfiddle 或类似的东西上,然后指给我看。
    • 请原谅我的无知,但我对javascript非常陌生,从未使用过jsfiddle。我尝试使用 jsfiddle 但没有结果。我在同一页面上有一个 php 脚本,它会在单击复选框后读取发布的内容,然后根据选中的框创建新查询。 jsfiddle 中没有所有这些脚本类型的位置,所以不知道该怎么做?一切正常我现在正在尝试实现保存/重新填充功能,它工作正常,但它只是没有将哪些框被检查到 php 脚本..
    • 没关系。如果它是公开的,那么将我指向你的服务器。我不介意看看。我目前还不清楚您要完成什么。如果表单的默认值由 PHP 填充,为什么要自动提交表单(使用 JavaScript)?如果它们已经作为 _POST 变量传递给您的 PHP,为什么不在初始请求中处理它们?
    • 我想这里真正的问题是,为什么不将复选框张贴到我的 php 脚本中以过滤正确的结果。所有复选框和过滤器都可以完美运行,直到它们被引导离开页面然后返回。一旦他们回来,它会保存正确选中的框,但是即使选中了框,它也会显示所有内容?我必须取消选中该框,然后再次选中它以获取正确的过滤器。
    猜你喜欢
    • 2017-10-26
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2014-06-12
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多