Javascript 当用户在选择框中选择选项时,使用window.location.href重定向用户只会更改导航器中url的最后一位
在我所有的rails应用程序页面中,我都有一个选择框,该框会根据环境的不同而变化:Javascript 当用户在选择框中选择选项时,使用window.location.href重定向用户只会更改导航器中url的最后一位,javascript,jquery,ruby-on-rails,select,Javascript,Jquery,Ruby On Rails,Select,在我所有的rails应用程序页面中,我都有一个选择框,该框会根据环境的不同而变化: <% if session[:user_status]%> <% if params[:office_id] %> <%= select_tag "dash_select", options_for_select([["<i class='fa fa-lock select_icon' aria-hidden='true'></i>"+se
<% if session[:user_status]%>
<% if params[:office_id] %>
<%= select_tag "dash_select", options_for_select([["<i class='fa fa-lock select_icon' aria-hidden='true'></i>"+session[:user_status], session[:user_status]], ["all offices", "all"]]), class: "form-control custom-office-select wide main-select-bar" %>
<% elsif params[:account_asso_id] %>
<%= select_tag "dash_select", options_for_select([["<i class='fa fa-lock select_icon' aria-hidden='true'></i>"+session[:user_status], session[:user_status]], ["<i class='fa fa-globe' aria-hidden='true'></i>
all offices", "all"]], "all"), class: "form-control custom-office-select wide" %>
<% else %>
<%= select_tag "dash_select", options_for_select([["<i class='fa fa-lock select_icon' aria-hidden='true'></i>"+session[:user_status], session[:user_status]], ["<i class='fa fa-globe select_icon' aria-hidden='true'></i>all offices", "all"]], session[:user_status]), class: "form-control custom-office-select wide" %>
<% end -%>
<% elsif session[:user_status] %>
<%= select_tag "dash_select", options_for_select([session[:user_status], session[:user_status]]), class: "form-control" %>
<% else %>
<% end -%>
我写了一些当选择选择框的选项时触发的JS:我根据选择的选项将用户重定向到不同的页面
$(document).ready(function() {
$('select').niceSelect();
$("#dash_select").change(function(){
if ($(this).val() == "all") {
window.location.href = "association/account_assos/"+<%=session[:account_asso_id]%>+"/offices"
}
else if ($(this).val() == "admin"){
window.location.href = "association/account_assos/"+<%=session[:account_asso_id]%>
}
else if ($(this).val() == "employee"){
window.location.href = "/users/"+ <%=session[:user_id] %>
}
else {
var office_id = $(this).val();
window.location.href = "association/office/"+office_id;
}
});
});
$(文档).ready(函数(){
$(“select').niceSelect();
$(“#破折号选择”)。更改(函数(){
if($(this.val()=“all”){
window.location.href=“协会/账户\协会/”++“/办公室”
}
else if($(this.val()=“admin”){
window.location.href=“关联/账户\关联/”+
}
else if($(this.val()=“employee”){
window.location.href=“/users/”+
}
否则{
var office_id=$(this.val();
window.location.href=“协会/办公室/”+办公室id;
}
});
});
当我在选择框中更改所选选项时,导航器中的url确实会更改,但不是更改整个url,而是简单地在“”上构建。例如,它会抑制当前url的最后/位,并在其上构建新url
例如,如果我当前所在页面的url为:
""
假设我将我的select改为“admin”,它将删除当前url中的“/users”部分,并在其上构建。这将为我提供:
如何更改整个url而不仅仅是最后一位?这是因为您使用的是相对路径。将您提供的URL字符串更改为绝对URL字符串,或在其前面加一个
/
,使其相对于基本文件夹
还要注意,switch
语句可能更适合您使用的模式。试试这个:
$("#dash_select").change(function() {
var url;
switch ($(this).val()) {
case: 'all':
url = "/association/account_assos/<%= session[:account_asso_id] %>";
break;
case: 'admin':
url = "/association/account_assos/<%= session[:account_asso_id] %>";
break;
case: 'employee':
url = "/users/<%= session[:user_id] %>";
break;
default:
url = "/association/office/" + $(this).val();
}
window.location.assign(url);
});
$(“#破折号选择”)。更改(函数(){
var-url;
开关($(this.val()){
案例:“全部”:
url=“/association/account_assos/”;
打破
案例:“管理员”:
url=“/association/account_assos/”;
打破
案例:“雇员”:
url=“/users/”;
打破
违约:
url=“/association/office/”+$(this.val();
}
window.location.assign(url);
});