使用observe_field传递多个表单值? (JQuery相当于Form.Element.serialize)

时间:2009-07-13 17:39:39

标签: jquery ruby-on-rails

我有一个包含两个text_fields的表单:

<input type="text" id="post_name" name="post[name]" />
<input type="text" id="post_email" name="post[email]" />

我在名字输入框上有一个observe_field,但我也想用它传递电子邮件值。在原型中,这是通过以下方式完成的:

<%= observe_field :post_name, 
:url => { :controller => :live_validations, :action => :validate_name },
:frequency => 0.5,
:update => :post_name_message,
:with => "Form.Element.serialize('post_name','post_email')" %>

但我正在使用JRails。是否有一个等同于Form.Element.serialize的JQuery?基本上可以获取两个输入框的值并将其分配给变量。

有关此帮助程序的更多信息,请访问:http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html#M001939

3 个答案:

答案 0 :(得分:2)

这是一个简单的方法 - 用JQuery用来调用getElementById()代替$('post_name')(我认为它使用与原型相同的语法?)

observe_field( :post_email, ..., 
:with => "'post_email='+encodeURIComponent(value)+'&post_name='+encodeURIComponent($('post_name').value)" %>

答案 1 :(得分:0)

$("form").serialize();

答案 2 :(得分:0)

JQuery有一个serialize()命令;它适用于使用jQuery选择器定义的一组字段(或在表单上,​​如algiecas的示例中所示)。

因此,在您的情况下,您需要一些选择器来定义您要序列化的所有字段,并且只定义那些字段。这可能就像“序列化所有输入字段”($(“input”)。serialize();)一样简单,或者可能需要添加标记,例如在您关注的字段周围放置一个带有id的div。