嗨,这是我的第二个帖子(和第二个星期的编程,永远),所以道歉,在此之前。
我有一个复选框列表,这些复选框表示要传递给params的不同搜索筛选器。例如,如果这是一个餐馆搜索,我希望我的用户能够检查出他们感兴趣的不同类型的菜肴。就像Yelp一样。
我想做的就是每次有人点击一个选项时发送新的参数。我现在不关心AJAX (当我谈到它的时候我会跨过那座桥)。
即使我没有使用AJAX,我也可以用observe_form来完成这个任务吗?我可以使用javascript吗?我见过关于“事件处理程序”的东西,但我不知道它们是什么。我不想放弃和问,但我已经工作了19个小时,我不能再处理了。谢谢!
代码:(更新为打字)
<div id="cuisine_form_div">
<% form_tag(hotels_path, :method => "GET", :id => :cuisine_form ) do %>
<%= check_box_tag('my_cuisine[]', 'Mexican', :onclick => "document.cuisine_form.submit();" ) %>
<%= label_tag(:my_cuisine, "Mexican", :onclick => "document.cuisine_form.submit();" ) %>
<%= check_box_tag('my_cuisine[]', 'Delis') %>
<%= label_tag(:my_cuisine, "Delis") %>
<%= submit_tag 'update' %>
<% end %>
</div><!--end.id="cuisine_form_div"-->
请注意,每当我像上面这样插入javascript时,它就会预先选中屏幕上的框,但不会向URL提交任何信息。如果我点击提交按钮,一切都很好,但"onclick“我无法得到的URL移动。
发布于 2010-01-20 12:37:21
我认为您想要做的是在每次单击时都需要测试复选框的“选中”状态。此时,您将需要读取从ID或VALUE属性中签入的内容。然后,如果在Chrome中使用Firebug或Developer工具,则可以警告()要调试或使用console.log的值。
另外,您将希望编写一个函数来放入您的onClick事件,而不是试图在事件中写入逻辑。
首先,只创建一个函数,如
function clickCheckbox {
/* paste your existing onClick logic */
}
然后从那里修改..。
如果你需要精确的语法,请告诉我。
我建议使用jQuery。将jQuery库添加到所有页面的head标记中。这样可以更容易地将函数用于AJAX和其他方面。
你可以:
$('#CheckboxID').click(function() {
if($(this).attr('checked')) {
$(this).attr('checked',false);
} else {
$(this).attr('checked',true);
}
});
发布于 2010-01-20 13:11:34
很多错误,但现在它在我的测试应用程序中工作!:)
这些点不见了/断了。
id
才能在Javascript中找到它生成的表单变得更像这样:
<% form_tag(cuisine_path, :method => "GET", :id => :cuisine_form, :name => :cuisine_form ) do %>
<%= check_box_tag('my_cuisine[]', 'Mexican', true, { :id => :cuisine_mexican, :onchange => "document.cuisine_form.submit();" }) %>
<%= label_tag(:cuisine_mexican, "Mexican" ) %>
<%= check_box_tag('my_cuisine[]', 'Delis', false, { :id => :cuisine_delis, :onchange => "document.cuisine_form.submit();" }) %>
<%= label_tag(:cuisine_delis, "Delis") %>
<%= submit_tag 'update' %>
<% end %>
https://stackoverflow.com/questions/2100528
复制