我正在编写一些jquery,我写的是2个下拉框。基本上,当第一个下拉列表更改时,它会过滤第二个下拉列表以仅显示适用的选项。如果在第一个下拉列表中选择了第一个选项(值:“none |”),则在第二个下拉列表中没有显示任何选项
大部分时间都很棒。问题在于:如果您在第一个下拉列表中选择第一个选项,则第二个下拉列表会清除。但是,如果您在第一个下拉列表中选择另一个选项,则第二个选项不应该为空。
如果你能帮助我解决这个问题,我将不胜感激。您可以在此处找到下拉框:http://goinspire.com/jwrp-hotel-registration/。
PS:如果它有所不同(但我认为没有),它是一个WordPress网站,表格由GravityForms生成。
PS:这是代码:
tripFilter = function () {
var tripClass = '.hotel-trip select',
hotelClass = '.hotel-name select',
unusedClass = '.unused-options select';
jQuery(tripClass).change(function(){
//testFunc();
var tripSelect = jQuery(tripClass),
trip = tripSelect.val(),
hotelSelect = tripSelect.parents('form').find(hotelClass);
if (trip === "none|"){
jQuery(hotelClass+" > option").each(function() {
jQuery(this).clone().appendTo(unusedClass);
jQuery(this).remove();
});
} else {
tripnum = trip.match(/JWRP (\d*)/)[1];
//var hotelChoices = [];
jQuery(unusedClass+" > option").each(function() {
jQuery(this).clone().appendTo(hotelClass);
jQuery(this).remove();
});
jQuery(hotelClass+" > option").each(function() {
hotelMatch = jQuery(this).val().match(/(\d*) /);
//console.log(hotelMatch);
if (hotelMatch === null || hotelMatch[1] != tripnum){
jQuery(this).clone().appendTo(unusedClass);
jQuery(this).remove();
//console.log("not a match!");
};
});
}
});
};
jQuery(document).ready(function () {
tripFilter();
});
jQuery(document).bind('gform_post_render', function(event, form_id){
if(form_id == 38) {
tripFilter();
}
});
答案 0 :(得分:0)
如果我理解得当,第一个dropdowm指南第二。 所以,我想你可能只是在第一个下拉列表的“更改”事件中添加一个监听器,每次第一次输入的值经过一些更改时执行你的函数。
尝试这种方式:
$(document).ready(function(){
$('#38').bind('change', tripFilter)
});