Вызвать JavaScript при изменении значения date_select в Ruby on Rails - PullRequest
0 голосов
/ 04 декабря 2018
<%= date_select(:production_month, :date, order: [:month, :year], :start_year => @start_year, :end_year => @end_year) %>

У меня есть вышеуказанный date_select в одной из моих форм Rails.

Я бы хотел, чтобы функция javascript вызывалась при изменении значения в указанном выше поле date_selected.

Я написал следующий блок javascript в своем коде для обработки этого:

$('#production_month').change(function () {alert("Yayyy!!!")});

Но эта функция javascript никогда не вызывается, независимо от того, какое значение я выбираю в моем date_select.

Что я здесь не так делаю?Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Вы можете получить id элемента, проверив элемент в браузере, или вы также можете явно установить id.

<%= date_select(:production_month, :date, order: [:month, :year], :start_year => @start_year, :end_year => @end_year, html_options: {id: 'production_month', class: 'my_css_class'}) %>

Затем использовать этот идентификатор в событии jQuery

$('#production_month').change(function () {alert("Yayyy!!!")});

В качестве альтернативы, вы можете попробовать это тоже

pass onchange: 'method();' in html_options

<%= date_select(:production_month, :date, order: [:month, :year], :start_year => @start_year, :end_year => @end_year, html_options: { onchange: 'fire_on_product_change(this.id);' } ) %>

Затем определите метод jQuery fire_on_product_change для события

<script type="text/javascript">
  function fire_on_product_change(id){
    var id = id;
     // Use jQuery to get any other attribute using id
    // $("#id").val() 
    alert("Yayyy!!!");
  })
</script>

Ссылка- выбор даты # 1 & выбор даты # 2

0 голосов
/ 04 декабря 2018

Это может быть проще сделать с помощью встроенных методов rails:

Rails 3 и Ajax date_select onchange => submit

date_select(object_name, method, options = {}, html_options = {})

В вашем случае:

<%= date_select(:production_month, :date, order: [:month, :year], :start_year => @start_year, :end_year => @end_year, html_options: { onchange: 'productionMonth();' } ) %>

РЕДАКТИРОВАТЬ: Или с правильным именем метода, которое я неправильно прочитал:

<%= date_select(:production_month, :date, order: [:month, :year], :start_year => @start_year, :end_year => @end_year, html_options: { onchange: 'fire_on_product_change();' } ) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...