验证轨道上的红宝石中的可见文本字段

时间:2014-01-01 06:35:23

标签: javascript jquery ruby-on-rails ruby

我的表中有一些隐藏的文本字段,当我单击添加按钮时,它会逐一显示。我想验证(在rails中)只有那些可见的行。

<div class="info_type">
        Internet<hr>
        <table id="email_add">
          <tr id="email_1">
            <th><%= f.label(:email1,"Email :") %></th>
            <td><input id="contact_email1" type="text" name="contact[email1]"></input>
            </td>
         </tr>
          <tr id="email_2">
            <th><%= f.label(:email2,"Email 2:") %></th>
            <td><input id="contact_email2" type="text" name="contact[email2]"></input>
            </td>
          </tr>
          <tr id="email_3">
            <th><%= f.label(:email3,"Email 3:") %></th>
            <td><input id="contact_email3" type="text" name="contact[email3]"></input>
            </td>
          </tr>
        </table>
        <input type="button" id="add_email" value="Add Email"/>
        <input type="button" id="delete_email" value="Delete Email"/>
      </div>

我使用jquery隐藏行email_2和email_3,并在点击添加时显示。 是否有任何方法在使用验证电子邮件标签时检查文本字段可见性,或者我只能在jquery中执行它?

1 个答案:

答案 0 :(得分:0)

向请求发送隐藏字段列表,然后在创建方法中,您可以在保存之前删除不想从参数保存的字段。

要确定隐藏字段,请使用JQuery的$("#contact_email1").is(":visible")

然后在保存之前在控制器中使用params[:info].delete :email1params.delete :email1取决于隐藏的元素变量,具体取决于它所在的位置。

因此,只需使用一些逻辑创建一个列表来跟踪隐藏的元素,可能只需使用int。然后迭代该列表并从params中删除它们。