【问题标题】:Appending URL using jQuery based on whether a checkbox is checked根据是否选中复选框使用 jQuery 附加 URL
【发布时间】:2015-07-03 00:10:46
【问题描述】:

我正在尝试使用 jQuery 附加一个 URL。

我的页面上有一个“警告”网格,由 servlet 填充。屏幕顶部有一个复选框,选中后将显示已清除的警告以及活动的警告。基本上,此复选框显示和隐藏网格的行。有一个用于清除警告的按钮,以及一个用于清除警告的按钮。选中复选框时会显示不清楚的按钮。

第一次单击复选框时,URL 会正确附加。但是,取消选中该复选框时,不清楚的按钮会粘住,并且 URL 未正确附加。

这是我的 jQuery:

 $(document).ready(function() 
   {
      var showClearedWarningsFlag = getURLParameter("showHideClearedWarnings");

  if(showClearedWarningsFlag = "SHOW")
  {
     $('#showClearedWarningsCheckBox').prop('checked', true);
     $('#unclearButton').show();
  }
  else
  {
     $('#showClearedWarningsCheckBox').prop('checked', false);
     $('#unclearButton').hide();
  }

});


 $('#showClearedWarningsCheckBox').change(function ()
 {
    if($(this).is(':checked'))
    { 
       window.location.search = "?showHideClearedWarnings=" + "SHOW";    
    }
    else
    {
       window.location.search = "?showHideClearedWarnings=" + "HIDE";
    }

 });

$('#clearButton').click(function(){
         $('#bagWarningAction').val('CLEAR') ;
    });

   $('#unclearButton').click(function(){
       $('#bagWarningAction').val('UNCLEAR') ;
   });

那么,我想在这里做什么:

if URL is show
   then show unclear button and check box
else if URL is hide
   don't show unclear button and don't check box
on change of checkbox
   if checked
      append URL to show
   else if not checked
      append URL to hide

然后,我有两个按钮用于清晰和不清晰地通过 SHOW 或 HIDE 传递到我页面上的隐藏输入。

但是,发生的情况是,当我按下显示已清除警告的复选框时,这会成功附加 URL,但在页面刷新时未选中该复选框。因此,再次选中复选框后,它只是重定向到 SHOW URL。如果我手动将 URL 更改为 HIDE,它会隐藏已清除的警告。

我想我在这里遗漏了一些非常微妙的东西。如果有人能阐明为什么该复选框无法在刷新中幸存下来,我将不胜感激!

【问题讨论】:

    标签: javascript java jquery html page-refresh


    【解决方案1】:

    编辑:这次我更仔细地重读了你的问题。 你可以检查控制台,可能有错误(错误的 ID,什么不是)。否则,我认为您的代码没有问题。下面的文字仍然适用,您可能想要使用 cookie,它比 URL 参数更持久(更不用说对最终用户更漂亮了)。

    根据定义,复选框值无法在刷新后继续存在。这是一个输入,它们的值不会被存储,除非你手动这样做(例如,通过 cookie)。

    因此,您可以尝试通过 jQuery 创建一个 cookie,以保存复选框的最后一个已知值。

    我建议阅读此 SO 回复以了解如何执行此操作 How do I set/unset cookie with jQuery?

    【讨论】:

    • 嗨,阿德里安,感谢您抽出宝贵时间回答。使用此代码的 Web 应用程序没有向最终用户显示的 URL。我知道这种方法可能不是最好的方法,但我需要在 sprint 结束之前得到一些东西!我只想让它现在工作,然后下次可能会看看更优雅的解决方案。我会尝试使用 cookie,但我宁愿使用 jQuery,如果只是为了弄清楚我的代码为什么不起作用!
    • 我建议检查这个 SO 回复 stackoverflow.com/questions/1090948/change-url-parameters/… 它有一个很好且易于使用的功能来更改 URL 参数(你试图用 window.location.search 做什么,我不是绝对positive 可用于更新现有值,这就是为什么我要求您检查浏览器控制台以查看它是否显示任何错误)。
    • 我很抱歉 - 不,没有显示错误!将检查该链接。非常感谢。
    【解决方案2】:

    我已经解决了这个问题。真的,非常愚蠢的错误。在我的 if 检查中,我总是更改要显示的 URL,因为我使用的是一个等号而不是两个等号。

    哎呀!

    【讨论】:

      猜你喜欢
      • 2013-06-30
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 2011-06-16
      • 1970-01-01
      相关资源
      最近更新 更多