2010-03-02 114 views
1

为什么内的JQuery,组合框add方法似乎并没有被承认为与传统的HTML组合框的位置:JQuery的动态组合框

http://viralpatel.net/blogs/demo/dynamic-combobox-listbox-dropdown-in-javascript.html

+2

我一个人不明白这个问题。什么组合框添加方法? – 2010-03-02 15:27:36

+1

你的意思是如果你使用jQuery选择器来获取组合引用而不是使用'document.getElementById'为什么'.add'没有工作?..如果是这种情况,那是因为选择器返回一个引用一个jQuery对象,而不是元素本身。 – 2010-03-02 15:30:41

+2

选择元素是**不是**组合框。组合框是一个文本框合并(因此名称)与下拉菜单。你在谈论一个模拟真实组合框的jQuery插件吗? – Quentin 2010-03-02 15:31:10

回答

5

要获得jQuery的实际DOM元素上调用DOM方法,use .get()

$("#myDropDown").get(0).add(option); 

请注意,虽然,还有另一种方式jQuery来做到这一点:

$('#myDropDown').append($('<option></option>').val(myVal).html(optionText)); 

还有Select Box plugin如果你正在做更多的选择。

+0

嗨,谢谢,这就是我需要的! – user310291 2010-03-02 16:47:21

+0

后来的解决方案是一个适用于所有浏览器,加上IE浏览器(它不喜欢'新选项(价值,文本)'的方式)...谢谢! – Jeach 2013-04-09 19:18:02

1
function MyFunction(myOption) 
{ 
    $("#cbx").attr("innerHTML",myOption); 
} 

myOption应该是这个样子:

var myOption = "<option>" + whatever you want + "</option>"; 

我会ussually创建自己的方法,所以我可以简单地调用e.g AddDoc(DOC);
即使$("#myDropDown").get(0).add(option);对我来说感觉太久了。
我做了一些像InsertOption(cbx,Option);
这只是一种替代方式^^。

function InsertOption(cbx,option) 
{ 
    $("#"+cbx).attr("innerHTML",option); 
} 

function AppendOption(cbx,option) 
{ 
    var opt = $("#"+cbx).attr("innerHTML"); 
    opt += option; 
    $("#"+cbx).attr("innerHTML",opt); 
} 

很抱歉,如果我犯任何错误^^ ...初中PROG ERE:d

1

如果假设我们有2个组合框

  1. 状态
  2. 城市

当你选择状态组合框,然后根据该值将它添加到城市组合框中:

$(document).ready(function() { 

     $("#DropDownList1").change(function() { 

      if ($("#DropDownList1 option:selected").text() == "Please Select") { 
       $("select[id$=DropDownList2] > option").remove(); 
      } 

      if ($("#DropDownList1 option:selected").text() == "Andhra Pradesh") { 
       $("select[id$=DropDownList2] > option").remove(); 
       $("#DropDownList2").append($("<option>" + ("Hyderabad") + "</option>")); 
       $("#DropDownList2").append($("<option>" + ("Vijayawada") + "</option>")); 
       $("#DropDownList2").append($("<option>" + ("Karimnagar") + "</option>")); 
      } 
      if ($("#DropDownList1 option:selected").text() == "Tamilnadu") { 
       $("select[id$=DropDownList2] > option").remove(); 
       $("#DropDownList2").append($("<option>" + ("Madhurai") + "</option>")); 
       $("#DropDownList2").append($("<option>" + ("Chennai") + "</option>")); 
      } 
      if ($("#DropDownList1 option:selected").text() == "Karnataka") { 
       $("select[id$=DropDownList2] > option").remove(); 
       $("#DropDownList2").append($("<option>" + ("Bangalore") + "</option>")); 
      } 

     }); 
    });