如何将表单元素的自动生成ID发送到javascript函数?

时间:2011-01-24 22:23:43

标签: javascript jquery ruby-on-rails ruby-on-rails-3

我正在尝试从Rails 3项目中的表单页面调用javascript函数。我需要向函数发送特定元素的ID。不幸的是,我无法轻易获取ID,因为它是由插件自动生成的。

我试过这样做:

<%= 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 %>

..但由于我不知道元素的ID,我无法从函数中调用它。

所以现在我正在尝试这样做,通过在输入元素加载时从“onload”调用函数:

<% 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)从第一个选项中的字段中获取元素ID,或

B)加载时从此输入元素调用此函数?

...或C)另一种方法吗?

提前致谢,如果有更多细节可以帮助我,请告诉我。

1 个答案:

答案 0 :(得分:1)

如果您在模型中保存了ID,请使用&lt;%= model.id%&gt;

获取

此规则的例外情况是在创建对象时,它在写入数据库之前。如果你去编辑或其他地方就可以了。

如果你在页面的某个地方有它:/那么你可以使用jQuery来为你获取它。

&LT; div id =“id_of_the_element”attr_with_my_id =“15”&gt; ABC&lt; / div&gt;

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

&LT;输入id =“id_of_the_element ...&gt;&lt; / input&gt;

$("#id_of_the_element").value