[英]Change select box value depending other selected option box
我是 Javascript/Jquery 的新手
所以我的问题是:我想根据其他选定的选项/框更改选择/选项框的文本和值
所以例如我的第一个选择是:
<select id="gender">
<option>Select Your Gender</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
然后我想根据所选选项更改的一个是:当它是男性时:
<select id="name">
<option>Select Your Name</option>
<option value="Male1">Male 1</option>
<option value="Male2">Male 2</option>
</select>
当它是女性时:
<select id="name">
<option>Select Your Name</option>
<option value="female1">Female 1</option>
<option value="female2">Female 2</option>
</select>
谢谢您的帮助! :)
有了DEMO
var options=""; //store the dynamic options
$("#gender").on('change',function(){ //add a change event handler to gender select
var value=$(this).val(); //get its selected value
options="<option>Select Your Name</option>"
if(value=="Male") //value ==Male then set male required options
{
options+="<option value='Male1'>Male 1</option>"
+"<option value='Male2'>Male 2</option>";
$("#name").html(options);
}
else if(value=="Female") //else set female required options
{
options+='<option value="female1">Female 1</option>'
+'<option value="female2">Female 2</option>';
$("#name").html(options);
}
else
$("#name").find('option').remove() //if first default text option is selected empty the select
});
我建议有一个更好的 HTML 架构来实现这种事情。 将每个名称仅包含在一个下拉列表中,并使用某些数据属性进行分类。 更改Gender Dropdown 的值时,使用类型过滤并切换选项。 按照这个:
$(function(){ $("#gender").on("change", function(){ var $target = $("#name").val(""), gender = $(this).val(); $target .toggleClass("hidden", gender === "") .find("option:gt(0)").addClass("hidden") .siblings().filter("[data-type="+gender+"]").removeClass("hidden"); }); });
.hidden{ display:none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <select id="gender"> <option value="">Select Your Gender</option> <option value="Male">Male</option> <option value="Female">Female</option> </select> <select id="name" class="hidden"> <option value="">Select Your Name</option> <option value="Male1" data-type="Male">Male 1</option> <option value="Male2" data-type="Male">Male 2</option> <option value="female1" data-type="Female">Female 1</option> <option value="female2" data-type="Female">Female 2</option> </select>
每当发生更改时,请使用性别下拉列表的值来填充名称。 我们使用 for 循环为每个性别生成多个选项。
$('#gender').change(function(){
if(!this.selectedIndex) return;
var gender = $(this).val(),
$name = $('#name').empty(),
$option = $('<option />').text('Select Your Name').appendTo($name);
for(var i = 1; i <= 2; i++)
$option.clone().prop('value', gender + i).text(gender + ' ' + i).appendTo($name);
});
<select id="gender">
<option>Select Your Gender</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
<select id="gtr" name="location" placeholder="Anycity"></select>
jQuery(function($) {
var gender = {
'Male': ['Male1', 'male2'],
'Female': ['Female1','Female1'],
}
var $gndr = $('#gtr');
$('#gender').change(function () { debugger
var GNDR = $(this).val(), gndrs = gender[GNDR] || [];
var html = $.map(gndrs, function(gndr){
return '<option value="' + gndr + '">' + gndr + '</option>'
}).join('');
$gndr.html(html);$gndr.append(new Option("Select Name", "0"));$gndr.val("0");
});
});
尝试这个:
$("#gender").on("change",function(){ var sel=""; if($(this).val() == "Female"){ sel=' <option>Select Your Name</option>'; sel+=' <option value="female1">Female 1</option>' sel+='<option value="female2">Female 2</option>' }else{// no other if since you have only two options male/female sel= '<option>Select Your Name</option>'; sel+= '<option value="Male1">Male 1</option>'; sel+= '<option value="Male2">Male 2</option>'; } $("#name").html(sel); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select id="gender"> <option>Select Your Gender</option> <option value="Male">Male</option> <option value="Female">Female</option> </select> <select id="name"> </select>
我建议你试试这种方式:
改变你的jQuery:
<select id="nameMale">
<option>Select Your Name</option>
<option value="Male1">Male 1</option>
<option value="Male2">Male 2</option>
</select>
<select id="nameFemale">
<option>Select Your Name</option>
<option value="Male1">Male 1</option>
<option value="Male2">Male 2</option>
</select>
插入这个javascript:
<script>
<![CDATA[
$(function() {
$('#nameFemale').hide();
$('#nameMale').hide();
function changeGen(val){
if(val == 'Female'){
$('#nameFemale').show();
$('#nameMale').hide();
}else{
$('#nameFemale').hide();
$('#nameMale').show();
}
}
$('#gender').change(function() {
changeGen($('#gender').val());
});
});
]]>
</script>
$('#gender').change(function (e) {
var val = $("option:selected", this).val()
console.log(val);
if(val =='Male'){
$('#name').find('option.female').hide();
$('#name').find('option.male').show();
}else if(val =='Female'){
$('#name').find('option.female').show();
$('#name').find('option.male').hide();
}else{
}
});
为每个选项添加了类,因为它是静态的。 然后您可以根据第一次选择的值隐藏第二次选择中的选项
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.