使用两个下拉列表的值填充文本框
Populate text box using values of two dropdown
我想用预定义值填充文本框。此文本框是只读的。用户可以从 2 个相互依赖的下拉框中 select。所有这些都是 bootstrap 项目中表格的一部分。
借鉴 this,
我可以先通过 selecting 填充第二个下拉列表。但是,不能将两者的功能结合起来 link 将它们组合到文本框。
代码:
<select id="cat">
<option val="Laptops">Laptops</option>
<option val="Phones">Phones</option>
<option val="Tablets">Tablets</option>
<option val="PC">PC</option>
</select>
<select id="item"></select>
<input id='price' type='text' readonly/>
javascript:
Laptops=new Array("HP","Dell","Apple","Lenovo");
Phones=new Array('Samsung','Nokia','iPhone');
Tablets=new Array('Apple','Lenovo','Asus','Acer','HP');
PC=new Array('IBM','Macintosh','Dell');
populateSelect();
$(function() {
$('#cat').change(function(){
populateSelect();
});
});
function populateSelect(){
cat=$('#cat').val();
$('#item').html('');
eval(cat).forEach(function(t) {
$('#item').append('<option>'+t+'</option>');
});
}
我在下拉列表 1 和 2 中分别有大约 5 个和 4 个值。目前未使用数据库。
当用户 select 来自任何下拉列表时,我们如何在文本框中添加价格?
因为你想显示商品的价格,我在当前对象结构中没有看到它。所以我稍微修改了对象结构。
此外,与新数组相比,我更喜欢使用 []
创建数组。
同样,我不喜欢使用 eval
,因为变量是全局可用的,它们是 window 对象的属性。因此,您可以使用 window[property]
来获取该特定数组。但相反,我更愿意创建一个新对象并将所有属性附加到该对象。这样你就可以避免污染全局命名空间。
Laptops=new Array({name : "HP", price : 200},{name : "Dell", price : 400},{name : "Apple", price : 400},{name : "Lenovo", price : 200});
Phones=new Array({name : "Samsung", price : 200},{name : "Nokia", price : 400},{name : "Apple", price : 400});
Tablets=new Array({name : "Apple", price : 200},{name : "Acer", price : 400},{name : "Lenovo", price : 400},{name : "Dell", price : 100});
PC=new Array({name : "Macnitosh", price : 200},{name : "Dell", price : 100});
$(function() {
function populateSelect(){
var value = $("#cat").val();
if(value) {
console.log("value"+window[value]);
$("#item").html("");
$.each(window[value], function(index, val) {
$("#item").append("<option value='"+val.price+"'>"+val.name+"</option>");
});
}
}
$('#cat').change(function(){
populateSelect();
});
populateSelect();
$("body").on("change", "#item", function() {
$("#price").val($(this).val());
});
});
我想用预定义值填充文本框。此文本框是只读的。用户可以从 2 个相互依赖的下拉框中 select。所有这些都是 bootstrap 项目中表格的一部分。
借鉴 this, 我可以先通过 selecting 填充第二个下拉列表。但是,不能将两者的功能结合起来 link 将它们组合到文本框。
代码:
<select id="cat">
<option val="Laptops">Laptops</option>
<option val="Phones">Phones</option>
<option val="Tablets">Tablets</option>
<option val="PC">PC</option>
</select>
<select id="item"></select>
<input id='price' type='text' readonly/>
javascript:
Laptops=new Array("HP","Dell","Apple","Lenovo");
Phones=new Array('Samsung','Nokia','iPhone');
Tablets=new Array('Apple','Lenovo','Asus','Acer','HP');
PC=new Array('IBM','Macintosh','Dell');
populateSelect();
$(function() {
$('#cat').change(function(){
populateSelect();
});
});
function populateSelect(){
cat=$('#cat').val();
$('#item').html('');
eval(cat).forEach(function(t) {
$('#item').append('<option>'+t+'</option>');
});
}
我在下拉列表 1 和 2 中分别有大约 5 个和 4 个值。目前未使用数据库。
当用户 select 来自任何下拉列表时,我们如何在文本框中添加价格?
因为你想显示商品的价格,我在当前对象结构中没有看到它。所以我稍微修改了对象结构。
此外,与新数组相比,我更喜欢使用 []
创建数组。
同样,我不喜欢使用 eval
,因为变量是全局可用的,它们是 window 对象的属性。因此,您可以使用 window[property]
来获取该特定数组。但相反,我更愿意创建一个新对象并将所有属性附加到该对象。这样你就可以避免污染全局命名空间。
Laptops=new Array({name : "HP", price : 200},{name : "Dell", price : 400},{name : "Apple", price : 400},{name : "Lenovo", price : 200});
Phones=new Array({name : "Samsung", price : 200},{name : "Nokia", price : 400},{name : "Apple", price : 400});
Tablets=new Array({name : "Apple", price : 200},{name : "Acer", price : 400},{name : "Lenovo", price : 400},{name : "Dell", price : 100});
PC=new Array({name : "Macnitosh", price : 200},{name : "Dell", price : 100});
$(function() {
function populateSelect(){
var value = $("#cat").val();
if(value) {
console.log("value"+window[value]);
$("#item").html("");
$.each(window[value], function(index, val) {
$("#item").append("<option value='"+val.price+"'>"+val.name+"</option>");
});
}
}
$('#cat').change(function(){
populateSelect();
});
populateSelect();
$("body").on("change", "#item", function() {
$("#price").val($(this).val());
});
});