在Rails中更改选择值时加载新页面

时间:2014-07-18 05:31:20

标签: javascript jquery html ruby-on-rails ruby

我有一个选择标签,可以加载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没有改变或页面没有改变..但是如果我手动点击一个标签它会改变.. 我错过了什么?

2 个答案:

答案 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}}选择框