所以我的表格看起来像是什么(再加上3个跨度[sub1 / sub2 / sub3])
< label for =" levelSelect">选择级别< / label>
< select id =' levelSelect'>
<选项> < /选项>
< option value =' 1'> Primary< / option>
< option value =' 2'> Lower Secondary< / option>
< option value =' 3'> Upper Secondary< / option>
< option value =' 4'> JC< / option>
< /选择>
< label class =' dummySearch'> Subject< / label>
< select class =' dummySearch' style =' width:150px;'>< / select>
< span id =' primarySearch'>
<%= label_tag' subject_search','主题' %GT;
<%subject_array = Subject.all.map {| subject | [subject.name]}%>
<%= select_tag' subject_search',options_for_select(subject_array,:selected => params [:subject_search]),: include_blank => true,class:' form-control' %GT;
< /跨度>
因此,如果我按下提交时它是一个普通的过滤器,那么subject_search内的任何值都将保留在那里。
传入的过滤器通常会返回这样的URL
https://example.com/tutors?utf8=%E2%9C%93&subject_search=&lssubject_search=Chinese&ussubject_search=&jcsubject_search=&fees_search=&commit=Filter
因此,默认情况下,我的表单只有2个选择下拉列表。第一个是levelSelect,另一个是dummySearch。当有人在levelSelect下选择一个选项时,相关的< select>会发生什么?将渲染,替换dummySearch。
现在我面临的问题是,当有人传入相关过滤器然后提交表单时,显示会恢复原来的levelSelect和dummySearch,而不是传入的过滤器。
我想说明虽然我要在过滤器通过后选择levelSelect,但我能够在第二个选择表单中看到所选值。它保留了我遇到困难的levelSelect中的值。因为它是传统的< select>标签及其唯一的作用是指示第二个选择表单将呈现什么,我在保留所选值时遇到问题。
我实际上对jQuery并不是很熟悉,但这是在各种主题搜索之间进行交换的内容。
$(文件)。就绪(函数(){
function hideDummy(){
$(' select.dummySearch')隐藏()。
$(' label.dummySearch')隐藏()。
}
function showDummy(){
$(' select.dummySearch')。节目();
$(' label.dummySearch')。节目();
}
function hidePrimary(){
$('跨度#primarySearch')。隐藏();
}
function showPrimary(){
$('跨度#primarySearch')显示()。
}
$('选择#levelSelect')。change(function(){
var i = $('选择#levelSelect')。val()
if(i == 1){
hideDummy();
hideLowerSec();
hideUppSec();
hideJC();
showPrimary();
}
我没有粘贴整个JS代码,但这就是想法,它只是重复自己,i == 2,依此类推。
我不确定我是否正确行事,以及我如何确保我的表单仍然是传入的内容而不是重置为默认值?