【问题标题】:cut off last few characters of values passed with JavaScript split function切断使用 JavaScript 拆分函数传递的值的最后几个字符
【发布时间】:2018-02-28 14:49:00
【问题描述】:

我有 Javascript 代码从前一页传递开始和结束时间日期值,但是,开始值包含不需要的其他字符。有什么办法可以去掉不必要的字符吗?

转发时搜索栏中的网址为localhost:56363/Bookings.aspx#start=27/02/2018 12:30&end=27/02/2018 17:30 并且&end 被传递到开始输入框但不需要。 JavaScript 代码如下:

<script type="text/javascript">
  $(document).ready(function () {
    hash();
    function hash() {
      var hashParams = window.location.hash.substr(1).split('#');
      for (var i = 0; i < hashParams.length; i++) {
        var p = hashParams[i].split('=');
        document.getElementById("<%=start.ClientID%>").value = decodeURIComponent(p[1]);
      }
      var hashParams = window.location.hash.substr(1).split('&');
      for (var i = 0; i < hashParams.length; i++) {
        var p = hashParams[i].split('=');
        document.getElementById("<%=end.ClientID%>").value = decodeURIComponent(p[1]);;
      }
    }
  });
 </script>

【问题讨论】:

  • 你应该 split ("&amp;") 然后迭代它并采用 [key, value] = entry.split("=")

标签: javascript asp.net split webforms


【解决方案1】:

哈希参数?!什么!

大多数应用将使用带有类似 localhost:56363/Bookings.aspx?start=27/02/2018 12:30&amp;end=27/02/2018 17:30 的 URL 的查询参数,请注意 ? 而不是哈希。查询参数将提供为window.location.search

无论如何。将您的 hash() 函数更改为

function hash(){
    var hash = window.location.hash;

    var start = hash.match(/start=([^&]+)/)[1];
    document.getElementById("<%=start.ClientID%>").value = decodeURIComponent(start);

    var end = hash.match(/end=([^&]+)/)[1];
    document.getElementById("<%=end.ClientID%>").value = decodeURIComponent(end);
}

正则表达式会找到相关参数,捕获组([^&amp;]+)会捕获每个参数的值。然后我们使用[1] 来检索每个参数的值。

【讨论】:

  • 非常感谢,完美运行
猜你喜欢
  • 1970-01-01
  • 2023-01-28
  • 1970-01-01
  • 2017-04-01
  • 2015-12-27
  • 2010-10-31
  • 1970-01-01
相关资源
最近更新 更多