我有一个选择标签,可以加载10个商店。 商店编号应作为更改选择值的参数传递。 我试着在我的html中添加一个标签..
<a href='#' id='wo_selected_shop'>aaa</a>
并在我的脚本中
$("#wo_select_shop").change(function() {
var shop_number = $("#wo_select_shop").val();
var url = '/estimate_lookups/select_store?shop_number='+shop_number;
$('#wo_selected_shop').attr('href',url).trigger('click');
});
$('#wo_selected_shop').click(function() {
console.log("A Click");
});
正在改变控制台工作的选择标签以及控制台中的href正在改变..但是url没有改变或页面没有改变..但是如果我手动点击一个标签它会改变.. 我错过了什么?
答案 0 :(得分:2)
基本上你所做的事情非常复杂。 我已经为您简化了这段代码。 而不是触发点击,使用 window.open 功能。 希望它有所帮助,这里是working code
<强> HTML:强>
<select id='wo_select_shop'>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<强> jQuery的:强>
$("#wo_select_shop").change(function() {
var shop_number = $("#wo_select_shop").val();
var url = '/estimate_lookups/select_store?shop_number='+shop_number;
window.open(url);
});
答案 1 :(得分:2)
除了awesomestvi
的答案之外,您还需要考虑 Turbolinks 在将change
事件绑定到select元素时的作用:
$(document).on("change", "#wo_select_shop", function() {
var shop_number = $("#wo_select_shop").val();
var url = '/estimate_lookups/select_store?shop_number='+shop_number;
//awesomestvi's code here
});
您将遇到的一个问题是Turbolinks通常会阻止您在加载新页面时发生JS
绑定。不可否认,这只会在您点击启用了turbolinks
的链接时发生,但这可能是您的问题,尤其是当您从链接加载页面上的select
框时/ p>
要解决Turbolinks
问题,您最好将change
事件处理程序绑定到document
对象(永不更改),并将delegating
绑定到您的{{1}}选择框