Ваш обработчик ready
делает три вещи:
- Получает текущее значение
#mktu_class
и сохраняет его в mktuClassID
.
- Связывает обработчик изменений с
#mktu_class
, который сохраняет его значение в mktuClassID
.
- Вызывает
tokenInput
с URL-адресом "/items/" + mktuClassID
, где mktuClassID
- это значение из (1).
В результате ваш обработчик изменений на #mktu_class
не делает ничего полезного, и любые изменения в #mktu_class
будут игнорироваться (ну, в конечном итоге они будут mktuClassID
, но ничего не будет смотреть на mktuClassID
так что эффект тот же). Возможно, ваш отступ отключен, и вы действительно хотите, чтобы вызов /items
был внутри обработчика изменений:
jQuery(document).ready ->
mktuClassID = $("#mktu_class").val();
$("#mktu_class").change getClassID = ->
mktuClassID = $(this).val()
$("#registration_application_items").tokenInput("/items/" + mktuClassID, {
crossDomain: false,
prePopulate: $("#registration_application_items").data("pre"),
preventDuplicates: true,
theme: "facebook"
})
Если это так, то полностью покончи с mktuClassID
и добавьте $('#mktu_class').change()
вызов для инициализации:
jQuery(document).ready ->
$('#mktu_class').change ->
mktuClassID = $(this).val()
$('#registration_application_items').tokenInput('/items/' + encodeURIComponent(mktuClassID), {
crossDomain: false,
prePopulate: $('#registration_application_items').data('pre'),
preventDuplicates: true,
theme: 'facebook'
})
$('#mktu_class').change();
И вы действительно должны быть параноиком и кодировать mktuClassID
, когда вводите его в URL, поэтому я добавил также вызов encodeURIComponent
.
Если вы хотите вызывать tokenInput
только в первый раз, когда #mktu_class
изменится, тогда свяжите обработчик изменений с помощью one
:
jQuery(document).ready ->
$('#mktu_class').one 'change', ->
mktuClassID = $(this).val()
$('#registration_application_items').tokenInput('/items/' + encodeURIComponent(mktuClassID), {
crossDomain: false,
prePopulate: $('#registration_application_items').data('pre'),
preventDuplicates: true,
theme: 'facebook'
})
Эта версия будет вызывать tokenInput
только при первом изменении #mktu_class
.