Как я могу отправить автоматически сгенерированный идентификатор для элемента формы в функцию JavaScript? - PullRequest
2 голосов
/ 25 января 2011

Я пытаюсь вызвать функцию javascript со страницы формы в проекте Rails 3. Мне нужно отправить функции идентификатор конкретного элемента. К сожалению, я не могу получить идентификатор легко, так как он автоматически генерируется плагином.

Я пытался сделать это так:

<%= t.select :number_type, @id_types, {}, {:onchange => "has_other_field(' + the_value.id.to_s + "');"} %>

<% if (!the_value.nil?) && (!the_value.number_type.nil?) && !@id_types_sm.include? the_value.number_type) %>
    <script type="text/javascript">
        setup_other_field("<%= the_value.number_type %>", ###ID WOULD GO HERE###);
    </script>
<% end %>

.. Но так как я не знаю идентификатор элемента, я не могу вызвать его из функции.

Так что теперь я пытаюсь сделать это таким образом, вызывая функцию из «onload», когда элемент input загружается:

<% if (!the_value.nil?) && (!the_value.number_type.nil?) && (!@id_types_sm.include? the_value.number_type) %>
    <%# Call the function from the form helper only if the conditions are met %>
    <%= t.select :number_type, @id_types, {}, {:onchange => "has_other_field(this.id);", :onload => "setup_other_field('" + the_value.number_type + "', this.id);"} %>                  
<% else %>
    <%# Use the form helper without calling the function %>
    <%= t.select :number_type, @id_types, {}, {:onchange => "has_other_field(this.id);"} %>                     
<% end %>

НО я понимаю, что onload не работает для этой ситуации. Есть ли обходной путь для этого? Как я могу либо

A) получить идентификатор элемента из поля функции в первом варианте или

B) вызывать эту функцию из этого элемента ввода всякий раз, когда она загружается?

... или в) альтернативный способ сделать это?

Заранее спасибо, и дайте мне знать, если более подробная информация поможет.

1 Ответ

1 голос
/ 25 января 2011

Если у вас есть ID, сохраненный в модели, получите его с помощью <% = model.id%>

Исключением из этого правила является то, что вы создаете объект и пишете его до записи в базу данных.Если вы перейдете к редактированию или куда-то еще, все будет в порядке.

Если у вас это есть где-то на странице: /, вы можете использовать jQuery, чтобы получить его для вас.

ABC
$("#id_of_the_element").attr('attr_with_my_id')

$("#id_of_the_element").value 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...