页面加载时不间断更改

时间:2017-05-17 05:57:36

标签: javascript jquery

所以我有一个脚本在(1)页面加载时将字符串附加到url,以及(2)调用onchange时。问题是浏览器不断触发更改事件。如何在页面加载时使其触发一次?

  <script>
    $(document).ready(function() {
      $("#staff-list").on('change', function() {
        location.href = "?account=" + $(this).val();
      }).triggerHandler('change');
    });
  </script>

  <div class="input-group mb-3">
    <span class="input-group-addon gi data-gi-size gi-user-add"></span>
    <select id="staff-list" name="staff-list">
       <Option>1</Option>
       <Option>2</Option>
    </select>
  </div>

2 个答案:

答案 0 :(得分:0)

请删除triggerHandler('change')

 <script>
    $(document).ready(function() {
      $("#staff-list").on('change', function() {
        location.href = "?account=" + $(this).val();
      });
    });
  </script>

这导致无限循环。

<强>更新 你可以放一些递归退出条件。这是将额外的参数传递给location.href,如果参数在那里,则不会触发triggerHandler

答案 1 :(得分:0)

你需要在if语句中创建一个条件来停止无限重定向循环。试试这个

<script type="text/javascript">
  $(document).ready(function () {
     $("#staff-list").on('change', function() {
      var AddToUrl = "?account="+ $(this).val();
      if(window.location.href.indexOf(AddToUrl) == -1) {
       window.location.href = AddToUrl;
      }
     }).change();
  });
</script>

<div class="input-group mb-3">
    <span class="input-group-addon gi data-gi-size gi-user-add"></span>
    <select id="staff-list" name="staff-list">
       <Option>1</Option>
       <Option>2</Option>
    </select>
</div>