代码之家  ›  专栏  ›  技术社区  ›  Nayantara Jeyaraj

在JavaScript中显示组合框项的文本onchage()

  •  3
  • Nayantara Jeyaraj  · 技术社区  · 7 年前

    我有一个在javascript文件中动态创建组合的表单。当组合框项更改时,我想在组合框的正下方显示某种帮助文本。

    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 回复  |  直到 7 年前
        1
  •  6
  •   Yogen Darji    7 年前

    添加 onchangeDefinition div外部 select

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

    $("#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>"
        );
      }
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
    <div id="lot"></div>