所以我有一个脚本在(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>
答案 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>