我的表中有一些隐藏的文本字段,当我单击添加按钮时,它会逐一显示。我想验证(在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中执行它?
答案 0 :(得分:0)
向请求发送隐藏字段列表,然后在创建方法中,您可以在保存之前删除不想从参数保存的字段。
要确定隐藏字段,请使用JQuery的$("#contact_email1").is(":visible")
然后在保存之前在控制器中使用params[:info].delete :email1
或params.delete :email1
取决于隐藏的元素变量,具体取决于它所在的位置。
因此,只需使用一些逻辑创建一个列表来跟踪隐藏的元素,可能只需使用int。然后迭代该列表并从params中删除它们。