Мне нужно, чтобы текстовое значение выбранных опций в множественном выборе возвращалось как «предложение» - просто для объединения строк, разделенных запятой и пробелом.
HTML-код, созданный для выбора, выглядит следующим образом:
<select id="foo_bazs_attributes_0_bar_ids" name="foo[bazs_attributes][0][bar_ids][]" multiple="multiple" data-validate="true">
<option value="1">I</option>
<option value="2">Want</option>
<option value="3">a</option>
<option value="4">Sentence</option>
</select>
Поэтому мне нужно, чтобы моя функция возвращала «Я, Хочу, Предложение».
Чтобы сделать это с помощью jQuery, я нашел следующее (на http://calisza.wordpress.com/2009/03/29/6-jquery-snippets-you-can-use-to-manipulate-select-inputs/):
var foo = [];
$('#multiple :selected').each(function(i, selected){
foo[i] = $(selected).text();
});
поэтому я написал в своем файле CoffeeScript следующее:
$.fn.selectedToSentence = () ->
arr = []
$('this :selected').each (i, sel) ->
arr[i] = $(sel).html()
arr.join(", ")
но она никогда не возвращает строку.
- редактировать -
Я называю это так:
$ ( 'Выберите [ID $ = "_ bar_ids"]'). SelectedToSentence ()
- / редактировать -
- редактировать 2 -
на сайте CoffeeScript, он показывает приведенный выше скрипт как компилируемый в:
var $;
$ = jQuery;
$.fn.selectedToSentence = function() {
var arr;
arr = [];
$('this :selected').each(function(i, selected) {
return arr[i] = $(selected).text();
});
return arr.join(", ");
};
- / редактировать 2 -
Я также попробовал следующие синтаксисы:
$(@ :selected).each ...
$('@ :selected').each ...
$("#{@} :selected").each ...
все безуспешно.
Я гуглил и посмотрел вокруг, возможно, с неправильными поисковыми терминами, потому что я выхожу пустым.
Я чувствую, что это просто синтаксическая вещь. Что я делаю неправильно?