javascript - 使用两个下拉列表的值填充文本框

标签 javascript jquery html twitter-bootstrap-3

我想用预定义的值填充文本框。该文本框是只读的。用户可以从 2 个相互依赖的下拉框中进行选择。所有这些都是引导项目中表单的一部分。

this 获取线索, 我可以通过选择第一个来填充第二个下拉列表。但是,无法结合两者的功能并将它们链接到文本框。

代码:

<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 个值。目前尚未使用数据库。

当用户从任何下拉列表中选择时,如何在文本框中添加价格?

最佳答案

由于您想显示商品的价格,我在当前的对象结构中没有看到它。所以我稍微修改了对象结构。

此外,与 new Array 相比,我更喜欢使用 [] 来创建数组。

同样,我不喜欢使用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());
  });
});

<强> DEMO

关于javascript - 使用两个下拉列表的值填充文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29342575/

相关文章:

javascript setTimeout调用错误

javascript - 基于另一个字段更新一个字段

jquery - 如何使 jQuery 动画看起来流畅?

jquery - 我应该如何在 jQuery 函数中使用 CSS 淡出

javascript - 如何将图像添加到谷歌地图 v3 中标记的信息窗口?

css - 视口(viewport)单元 VW 重叠 - 每个视口(viewport)小于 100 vw?

javascript - 无法在 Material UI 中获取 Popper

javascript - 在弹出窗口中显示完整的 html(元、头部、正文)

javascript - 使 .appendTo() 适用于第一个元素?

html - Apple 设备中悬停时出现 CSS 故障