diff --git a/backbone.modelbinding.js b/backbone.modelbinding.js
index 0161cd4..2469b18 100644
--- a/backbone.modelbinding.js
+++ b/backbone.modelbinding.js
@@ -238,7 +238,12 @@ var modelbinding = (function(Backbone, _, $) {
var elementChange = function(ev){
var targetEl = view.$(ev.target);
var value = targetEl.val();
- var text = targetEl.find(":selected").text();
+ var selections = targetEl.find(":selected");
+ if (selections.size() > 1) {
+ var text = _.map(selections, function(sel){ return sel.text });
+ } else {
+ var text = selections.text();
+ }
setModelValue(attribute_name, value, text);
};
diff --git a/spec/javascripts/helpers/sample.backbone.app.js b/spec/javascripts/helpers/sample.backbone.app.js
index 8f9f734..d35d165 100644
--- a/spec/javascripts/helpers/sample.backbone.app.js
+++ b/spec/javascripts/helpers/sample.backbone.app.js
@@ -42,6 +42,10 @@ AView = Backbone.View.extend({
\
\
\
+ \
\
\
\
diff --git a/spec/javascripts/selectboxConventionBindings.spec.js b/spec/javascripts/selectboxConventionBindings.spec.js
index c95376e..d6dc886 100644
--- a/spec/javascripts/selectboxConventionBindings.spec.js
+++ b/spec/javascripts/selectboxConventionBindings.spec.js
@@ -46,6 +46,14 @@ describe("select element convention binding", function(){
expect(this.model.get('education_text')).toEqual("i dun learned at grade skool");
});
+
+ it("applies the text of multiple selections to the model", function(){
+ var el = this.view.$("#multiple_select");
+ el.val(["selection_1", "selection_2"]);
+ el.trigger('change');
+
+ expect(this.model.get('multiple_select_text')).toEqual(["Selection 1", "Selection 2"]);
+ });
it("updates the model to the selected value when the model is set to a value that doesn't exist, on render", function(){
var el = this.view.$("#operating_system");