Jquery复选框在提交时取消选中


Jquery checkbox unchecks on submit

提交后刷新页面时,我的复选框为空。我想检查一下。如何在jquery中做到这一点?

这是我的jquery代码。

        $(document).ready(function () {
            $(':checkbox.selectall').on('click', function () {
                $(':checkbox[id="' + $(this).data('checkbox-name') + '"]').prop("checked", $(this).prop("checked"));
                $( "#frm1" ).submit();
            });
            $(':checkbox.checkme').on('click', function () {
                var _selectall = $(this).prop("checked");
                if (_selectall) {
                    $(':checkbox[name="' + $(this).attr('name') + '"]').each(function (i) {
                        _selectall = $(this).prop("checked");
                        return _selectall;
                    });
                }
                $(':checkbox[name="' + $(this).data('select-all') + '"]').prop("checked", _selectall);
                $( "#frm1" ).submit();
            });
        });

我的html如下。。。

<input type='checkbox' id='selectall' name='sa_subcatinput[]' value='$row[id]'     
    data-checkbox-name='$row[id]' class='selectall'/></label></a></li>
<input type='checkbox' name='subcatinput[]' value='$test[id]' id='$test[category]' 
    class='checkme'  data-select-all='sa_subcatinput[]'/>

除非将一个指示要选中复选框的值发送回页面,否则无法执行此操作。由于您说页面刷新,因此发生了服务器通信。因此,您可以使用ajax来保持复选框处于选中状态

传递一个带有id、数字或值的querystring参数,或任何选中复选框的参数。使用服务器端代码请求参数,或者使用get参数函数请求客户端javascript(这个网站上有很多)。

使用自定义函数和返回的值重新检查了该框。

$('#ckeckbox1').val(unescape(getParam(document.URL,'checkbox1')));
function getParam(url,name) {
  name = name.replace(/['[]/,"'''[").replace(/[']]/,"''']");
  var regexS = "[''?&]"+name+"=([^&#]*)";
  var regex = new RegExp(regexS);
  var results = regex.exec(url);
  if( results == null )
    return "";
  else
    return results[1];
}
function removeParameter(url, parameter) {
  var urlparts= url.split('?');
  if (urlparts.length>=2) {
    var urlBase=urlparts.shift(); //get first part, and remove from array
    var queryString=urlparts.join("?"); //join it back up
    var prefix = encodeURIComponent(parameter)+'=';
    var pars = queryString.split(/[&;]/g);
    for (var i= pars.length; i-->0;)               //reverse iteration as may be destructive
        if (pars[i].lastIndexOf(prefix, 0)!==-1)   //idiom for string.startsWith
            pars.splice(i, 1);
    url = urlBase+'?'+pars.join('&');
  }
  return url;
}

我能够获得使用php的代码。这是我在输入中插入的代码,使其工作。

echo"<input type='checkbox' id='selectall' name='sa_subcatinput[]' value='$row[id]'
    data-checkbox-name='$row[id]' class='selectall'";
    if (isset($_POST['sa_subcatinput'])) {
        if (in_array($row['id'], $_POST['sa_subcatinput'])) {
            echo"checked='checked'";
        }
    }
echo"/>

echo"<input type='checkbox' name='subcatinput[]' value='$test[id]'
    id='$test[category]' class='checkme'  data-select-all='sa_subcatinput[]'";
    if (isset($_POST['subcatinput'])) {
        if (in_array($test['id'], $_POST['subcatinput'])) {
           echo"checked='checked'";
        }
    }
echo"/>