2016-07-21 17 views
0

在的Ruby-on-Rails的,我使用一個多功能已選擇插件如下省份的列表:選擇.VAL有陌生,可理解的價值(選的插件)

<%= select_tag :provinces, 
options_for_select(DataHelper::all_provinces_captions.zip(DataHelper::all_provinces_ids)), 
{:multiple => true, class: 'chosen-select chzn-select', 
:data => {:placeholder => 'Filter Provinces/States'}}%> 

我也在同一個頁面上有一個表單字段選擇器,像這樣:

<%= f.select :province_ids, 
    (DataHelper::all_provinces_captions.zip(DataHelper::all_provinces_ids)), 
       { include_blank: true }, { 
       multiple: true, data: {placeholder: 'Filter Provinces/States'} } 
%> 

最後,我有一個JavaScript函數,同步兩個時#provinces,帶班.chzn選的變化:

var selectedVals = []; 

$(".chzn-select").chosen().change(function() { 
    $("#provinces option:selected").each(function() { 
    console.log ("this value is " + ($(this).val)); 
    selectedVals.push($(this).val); 
    }); 
    $("#education_plan_province_ids").empty(); 
    for (var i = 0; i < selectedVals.length; i++) { 
    console.log (selectedVals[i] + " selected"); 
    $("#education_plan_province_ids").append($("<option>" + selectedVals[i] + "</option>")).prop("selected", true); 
    } 
}); 

然而,在我的控制檯,而不是得到一個輸出,「這個值是阿拉巴馬」例如,我得到如下:

this value is function (a){var b,c,d,e=this[0];{if(arguments.length)return 
d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d 
a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e 
e+="":n.isArray(e)&&(e=n.map(e,function(a){return 
null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase(
],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return 
b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!= 
(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c 
c.replace(bc,""):null==c?"":c)}} 

所以毫不奇怪,我,爲什麼發生這種情況很迷茫! 對於信息的最後一塊,這裏是all_provinces_captions,all_provinces_ids,canada_provinces_with_caption和usa_provinces_with_caption在DataHelper,所有陣列:

def self.usa_provinces_with_caption 
    [["Alabama", "alabama"], ["Alaska", "alaska"], ["Arizona", "arizona"], ["Arkansas", "arkansas"], ["California", "california"], ["Colorado", "colorado"], ["Connecticut", "connecticut"], ["Delaware", "delaware"], ["District Of Columbia", "district of columbia"], ["Florida", "florida"], ["Georgia", "georgia"], ["Hawaii", "hawaii"], ["Idaho", "idaho"], ["Illinois", "illinois"], ["Indiana", "indiana"], ["Iowa", "iowa"], ["Kansas", "kansas"], ["Kentucky", "kentucky"], ["Louisiana", "louisiana"], ["Maine", "maine"], ["Maryland", "maryland"], ["Massachusetts", "massachusetts"], ["Michigan", "michigan"], ["Minnesota", "minnesota"], ["Mississippi", "mississippi"], ["Missouri", "missouri"], ["Montana", "montana"], ["Nebraska", "nebraska"], ["Nevada", "nevada"], ["New Hampshire", "new hampshire"], ["New Jersey", "new jersey"], ["New Mexico", "new mexico"], ["New York", "new york"], ["North Carolina", "north carolina"], ["North Dakota", "north dakota"], ["Ohio", "ohio"], ["Oklahoma", "oklahoma"], ["Oregon", "oregon"], ["Pennsylvania", "pennsylvania"], ["Rhode Island", "rhode island"], ["South Carolina", "south carolina"], ["South Dakota", "south dakota"], ["Tennessee", "tennessee"], ["Texas", "texas"], ["Utah", "utah"], ["Vermont", "vermont"], ["Virginia", "virginia"], ["Washington", "washington"], ["West Virginia", "west virginia"], ["Wisconsin", "wisconsin"], ["Wyoming", "wyoming"]] 
end 
def self.canada_provinces_with_caption 
    [["Alberta", "alberta"], ["British Columbia", "british columbia"], ["Manitoba", "manitoba"], ["New Brunswick", "new brunswick"], ["Newfoundland", "newfoundland"], ["Northwest Territories", "northwest territories"], ["Nova Scotia", "nova scotia"], ["Nunavut", "nunavut"], ["Ontario", "ontario"], ["Prince Edward Island", "prince edward island"], ["Quebec", "quebec"], ["Saskatchewan", "saskatchewan"], ["Yukon", "yukon"]] 
end 
def self.all_provinces_captions 
    usa_provinces_with_caption.map { |x| x.first } + canada_provinces_with_caption.map { |x| x.first } 
end 
def self.all_provinces_ids 
    usa_provinces_with_caption.map { |x| (Province.find_by name: x.first).id} + canada_provinces_with_caption.map { |x| (Province.find_by name: x.first).id } 
end 
+0

它看起來像是您在$(this).val結尾缺少()。它應該是$(this).val()。 –

+0

這是正確的!你可以把它作爲答案,以便我可以確認它嗎? –

+0

會做,很高興它的工作。 –

回答

1

它看起來像缺少.val方法的括號。請嘗試以下操作:

$(this).val() 
0

嘗試,您呈現的頁面上,檢查選擇元素,並且檢查元素(通常是隱藏的),並挑選ID有更換

$(".chzn-select").chosen().change(function() { 
} 

$("#your-id").change(function() { 
    // do some stuff 
    $("#your-id").trigger("liszt:updated"); //This is necessary when you change your chosen select options, so it refresh the component 
} 

希望它能幫助小號!

+0

克雷格·斯特羅曼已經有了正確的答案,我想 - 還沒有嘗試過你,但謝謝你的幫助! –

+0

好的,所以!不客氣=) –