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

Loading a new page on changing select value in Rails

本文关键字:新页面 一个 加载 Rails 选择      更新时间:2023-09-26

我有一个select标签,它加载了10家商店。在改变选择值时,Shop Number应该作为参数传递。我试着在我的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没有改变或者页面没有改变…但是如果我手动点击一个标签,它就会改变。我错过了什么?

基本上你所做的是相当复杂的。我为您简化了这段代码。使用窗口而不是触发单击。打开函数。希望它有帮助,这是工作代码

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);
});

对于awesomestvi的答案,您需要考虑 turbollinks 在将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
});

你会有一个问题是涡轮链接往往会阻止JS绑定发生,当你加载一个新的页面。不可否认,这只会在您单击启用turbolinks的链接时发生,但这可能对您来说是一个问题,特别是如果您从链接

加载页面上的select

为了解决Turbolinks问题,您最好将change事件处理程序绑定到document对象(永远不会更改),并将delegating绑定到选择框