【问题标题】:Update or append URL parameters rather than replace entire URL更新或附加 URL 参数,而不是替换整个 URL
【发布时间】:2014-07-16 19:28:14
【问题描述】:

我正在尝试建立一个周历。目前,日历具有前进和后退链接,这些链接通过在末尾附加?date= 构建一个新 URL 来工作。示例:

<a href="<?php get_current_url() ?>/?date=2014-07-23">Next week</a>
<a href="<?php get_current_url() ?>/?date=2014-07-09">Prev week</a>

我还想为日历添加一个过滤器,只允许在日历上显示某些事件类型。我使用 GET 方法想出了以下内容:

<form method="GET" action="">
  <select name="type">
    <option selected disabled value=''>Type</option>
    // event option stuff
  </select>
  <input type="submit" value="submit">
</form>

提交后,此表单只是重新构建一个新 URL,并在末尾添加 ?type=&lt;something&gt;。如果 URL 已经有日期参数,我的表单会忽略它。例如:

http://www.example.com/?date=2014-07-16

变成:

http://www.example.com/?type=dinner-date

同样,周导航会忽略过滤器。

有没有一种简单的方法可以让过滤器和导航链接一起工作?

例如,如果?date= 已存在,则将&amp;type= 附加到URL。如果一个或两个参数已经存在,那么这些值会被简单地更新。

【问题讨论】:

  • 为什么不使用隐藏字段作为日期? &lt;input type="hidden" name="date" value="2014-07-23" /&gt;
  • @SamMonk 是的,我认为这是处理日期已经存在并提交表单的好主意。但反过来又会如何运作呢? IE。当首先选择了一个事件类型时。另外,如果日期和类型都存在并且选择了新类型或新日期,它会如何工作?
  • @user1444027 日期将更新为新值。

标签: javascript php html


【解决方案1】:

我假设你可以使用 jQuery:

<form method="GET" action="http://www.example.com">
    <input type="hidden" name="date" id="date" value="<?php echo date;?>" />
    <select name="type">
        <option selected disabled value=''>Type</option>
        <!-- event option stuff -->
    </select>
    <input type="submit" value="submit" onclick="buildLink($('#date').val());">
    <br>
    <input type=button onclick="buildLink('2014-07-23');" value="Next week" />
    <input type=button onclick="buildLink('2014-07-09');" value="Prev week" />
</form>

然后这是一个简单的 Javascript 函数,提交表单,根据你的选择,在提交之前表单中的日期会发生变化:

function buildLink(date) {
    $('#date').val(date);
    $('form').submit();
}

【讨论】:

  • 下一周和上一周的链接是否需要在同一个表单内?在我的日历布局中,它们不在同一个位置。
  • 我相信它们可以出现在您需要的任何地方。它们甚至仍然可以是这样的链接&lt;a href="#" onclick="buildLink('2014-07-09');"&gt;Prev week&lt;/a&gt;
猜你喜欢
  • 2015-12-26
  • 2013-10-11
  • 2012-05-13
  • 2021-02-14
  • 2013-04-19
  • 1970-01-01
  • 2019-07-03
  • 2013-05-31
  • 2022-01-22
相关资源
最近更新 更多