在JavaScript中显示Combobox项目的onchage()文本

时间:2017-09-20 08:22:50

标签: javascript html combobox onchange addeventlistener

我有一个表单,我可以在javascript文件中动态创建一个组合。当组合框项目发生更改时,我想在组合下方显示一些帮助文本。

我正在创建组合(ID为WhereOperatorCombo),如下所示,并添加了一个事件监听器。

$("#lot").append(
          "<h5> Select an Operator </h5>"+
          "<div class='col-md-12'>"+
            "<select id='WhereOperatorCombo' name='WhereOperatorCombo' class='form-control'>"+
            "<option value='Select an option'>Select an option</option>"+
            "<optgroup label='--Comparison Operators--'>"+
                "<option value='equal'>=</option>"+
                "<option value='notequal'>!=</option>"+
                "<option value='gt'>"+gt+"</option>"+
                "<option value='lt'>"+lt+"</option>"+
                "<option value='gte'>"+gte+"</option>"+
                "<option value='lte'>"+lte+"</option>"+
                "<option value='ngt'>"+ngt+"</option>"+
                "<option value='nlt'>"+nlt+"</option>"
    );

   $("#WhereOperatorCombo").append(
              "<optgroup><optgroup label='--Logical Operators--'>"
   );


   for (var k = 0; k < logicalOperatorListArray.length; k++)
   {
       $("#WhereOperatorCombo").append(
                  "<option value="+logicalOperatorListArray[k]+">"+logicalOperatorListArray[k]+"</option>"                              
       );
   }

   $("#WhereOperatorCombo").append(
              "</optgroup></select>" +
              "<div id='onchangeDefinition' class='col-md-12'></div>"+
              "</div>"                              
   );

   document.getElementById("WhereOperatorCombo").addEventListener("change", function() {
        displayValueinput();
    }, false);

displayValueinput()方法

function displayValueinput()
{
    var myNode = document.getElementById("onchangeDefinition");
    var fc = myNode.firstChild;

    while( fc ) {
        myNode.removeChild( fc );
        fc = myNode.firstChild;
    }

    var choice=document.getElementById("WhereOperatorCombo");
    var selectedOperator = choice.options[choice.selectedIndex].text;

    if(selectedOperator == "=")
    {    
        $("#onchangeDefinition").append(
                  "<h5> This operator filters the records that are equal the value that you provide</h5>"                               
       );
    }

    else if(selectedOperator == "!=")
    {    
        $("#onchangeDefinition").append(
                  "<h5> This operator filters the records that are NOT equal the value that you provide</h5>"                               
       );
    }
...
  

但我面临的问题是onchangeDefinition部门没有显示任何内容。

我尝试在if(selectedOperator == "!=")决定中显示一个警报,只是为了检查它是否通过该阻止,我正在收到警报。但帮助文本没有按照我的意图附加到该部门。

这方面的任何建议都将受到高度赞赏。

1 个答案:

答案 0 :(得分:6)

onchangeDefinition元素之外添加select div。

$("#WhereOperatorCombo").closest('div').append()

尝试以下代码作为示例

&#13;
&#13;
$("#lot").append(
  "<h5> Select an Operator </h5>" +
  "<div class='col-md-12'>" +
  "<select id='WhereOperatorCombo' name='WhereOperatorCombo' class='form-control'>" +
  "<option value='Select an option'>Select an option</option>" +
  "<optgroup label='--Comparison Operators--'>" +
  "<option value='equal'>=</option>" +
  "<option value='notequal'>!=</option>" +
  "<option value='gt'>gt</option>" +
  "<option value='lt'>lt </option>" +
  "<option value='gte'>gte</option>" +
  "<option value='lte'>lte </option>" +
  "<option value='ngt'> ngt </option>" +
  "<option value='nlt'>nlt</option>"
);

$("#WhereOperatorCombo").append(
  "<optgroup><optgroup label='--Logical Operators--'>"
);
logicalOperatorListArray = [];

for (var k = 0; k < logicalOperatorListArray.length; k++) {
  $("#WhereOperatorCombo").append(
    "<option value=" + logicalOperatorListArray[k] + ">" + logicalOperatorListArray[k] + "</option>"
  );
}

$("#WhereOperatorCombo").closest('div').append(
  "</optgroup></select>" +
  "<div id='onchangeDefinition' class='col-md-12'></div>" +
  "</div>"
);

document.getElementById("WhereOperatorCombo").addEventListener("change", function() {
  displayValueinput();
}, false);


function displayValueinput() {

  var myNode = document.getElementById("onchangeDefinition");
  var fc = myNode.firstChild;

  while (fc) {
    myNode.removeChild(fc);
    fc = myNode.firstChild;
  }
  debugger;
  var choice = document.getElementById("WhereOperatorCombo");
  var selectedOperator = choice.options[choice.selectedIndex].text;

  if (selectedOperator == "=") {
    $("#onchangeDefinition").append(
      "<h5> This operator filters the records that are equal the value that you provide</h5>"
    );
  } else if (selectedOperator == "!=") {
    $("#onchangeDefinition").append(
      "<h5> This operator filters the records that are NOT equal the value that you provide</h5>"
    );
  }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<div id="lot"></div>
&#13;
&#13;
&#13;