Как получить текстовое значение выбранного параметра и использовать его в качестве условного выражения? - PullRequest
0 голосов
/ 30 марта 2020

Итак, я использую динамический c раскрывающийся список и получаю значения из базы данных, а затем использую выбранную опцию, чтобы сделать несколько условных выражений. Выпадающий список создается динамически, мой код выглядит следующим образом:

function buscarHist(fgshgdjhgfgffjtfj) {
  $('.divHist').show();
  $('#down').html('');
  $.getJSON("./php/obtenerDatos.php", {
    IDA: fgshgdjhgfgffjtfj
  }, function(data) {
    var enca = Object.keys(data[0]);
    // console.log(enca);
    $.each(enca, function(i, item) {
      // $('#catalogos').append(item)
      $('#down').append('<option value ="' + data[0][item] + '" > ' + item + ' </option>')
      // console.log(item)

    });

  });
  $('#down').change(function() {
    $('#txtnombre').val($(this).val())
    // var mivalor = $('#txtnombre').val() 

  })
}

$(document).ready(function() {


      var AFIRMACIONES = [{
          display: "NO",
          value: "0"
        },
        {
          display: "SI",
          value: "1"
        }

      ];

      var AFIRMACIONES2 = [{
          display: "SI",
          value: "1"
        },
        {
          display: "NO",
          value: "0"
        }
      ];

      $(document).ready(function() {
        getSelectData($("#down"));
      });

      $("#down").change(function() {
        getSelectData($(this));

        function getSelectData(el) {
          var $option = el.find('option:selected');
          var text = $option.text();
          console.log(text);

          switch (text) {
            case 'PESO':
              list(AFIRMACIONES);
              break;
            case 'ZURDO':
              list(AFIRMACIONES2);
              break;

            default:
              $("#child_selection").html('');
              break;
          }

        }

        //  var parent = $(this).val();  
        //   console.log(parent)

        //  console.log(parent)

      });



      function list(array_list) {
        $("#child_selection").html("");
        $(array_list).each(function(i) {

          $("#child_selection").append("<option value=\"" + array_list[i].value + "\">" + array_list[i].display + "</option>");
        });
      }

      $('#child_selection').change(function() {
        $('#txtnombre').val($(this).val())

        //$("#txtnombre").hide();

        // }

      })

все работает нормально, но я пытаюсь использовать этот фрагмент кода, чтобы помочь мне получить значение

   var $option = el.find('option:selected');
   var text  = $option.text();
   console.log(text);

Предполагается, что

var text приносит мне значение 'PESO', которое это нормально, но когда я пытаюсь использовать это значение для переключения условного, ничего не делает, мой вопрос, возможно ли использовать этот ярлык в качестве значения? Потому что я не могу использовать значения 0 и 1, например, которое будет значением в примере PESO ...

ОБНОВЛЕНИЕ: Хорошо, мой раскрывающийся список работает динамически, и я извлекаю данные, используя этот код, который использует ответ Json

function buscarHist(fgshgdjhgfgffjtfj){
$('.divHist').show();
$('#down').html('');
$.getJSON("./php/obtenerDatos.php",{IDA:fgshgdjhgfgffjtfj}, function(data){
var enca =  Object.keys(data[0]);
// console.log(enca);
  $.each(enca,function(i,item){
   // $('#catalogos').append(item)
    $('#down').append('<option value ="' + data[0][item] + '" > '+ item +' </option>')  
    $("#down option:selected").text()
    if($("#down option:selected").text() == 'EDO_CIVIL'){
      $('#txtnombre').hide();
     // llenarNuevoDrop(ID_CATALOGO);
     //ocultarTEXT;
     //eventoCHANGEdelnuevoDROP();
    }
  });   

и в моем коде html я только использую этот фрагмент кода, чтобы показать выпадающее меню и текстовое поле, чего я пытаюсь достичь, это вызвать информацию из базы данных и затем отредактировать определенные значения в соответствии с выбором пользователя Я использую этот список, потому что из базы данных есть определенные значения, которые работают только с каталогами, например, «ZURDO» отображается как 1 или 0 в каталоге, и я должен показать «SI» или «НЕ», «EDO_CIVIL» иметь эти значения внутри каталога » 1 ',' 2 ',' 3 ', но, очевидно, я не могу показать это значение пользователю, поэтому я должен использовать' SOLTERO ',' CASADO ',' VIUDO ', поэтому я сейчас пытаюсь достичь этого, я верю, потому что, как я звоню данные о моих родительских выпадающих не отображаются на ребенка?

это мой код от HTML:

 </thead>                                    
   <select name="down" id="down" > 

                             </select>
                             <select name="child_selection" id="child_selection">
                              </select>

                             <input id="txtnombre" type="text" class="form-control autofocus form-control-round F1" placeholder="SIN INFORMACION"/>
                             <input id="txtnombre2" type="text"  style="visibility:hidden" class="form-control autofocus form-control-round F1" placeholder="SIN INFORMACION"/>

1 Ответ

0 голосов
/ 30 марта 2020

В этом типе вопросов вы должны опубликовать соответствующий код html, который очень полезен. Что нужно учитывать:

  1. Не вызывайте $(document).ready дважды, достаточно одного раза.
  2. Не объявляйте функции (getSelectData) внутри обработчиков ($("#down").change) или в конечном итоге вы будете снова и снова пересекать одну и ту же функцию.

Как видите, у вас логика c была в порядке, проблема заключалась в структуре всего кода.

$(document).ready(function() {
  var AFIRMACIONES = [
    {
      display: "NO",
      value: "0"
    },
    {
      display: "SI",
      value: "1"
    }
  ];

  var AFIRMACIONES2 = [
    {
      display: "SI",
      value: "1"
    },
    {
      display: "NO",
      value: "0"
    }
  ];

  var AFIRMACIONES3 = [
    {
      display: "CASADO",
      value: "1"
    },
    {
      display: "SOLTERO",
      value: "2"
    },
    {
      display: "VIUDO",
      value: "3"
    }
  ];

  // $(document).ready(function() {
  getSelectData($("#down"));
  $('#txtnombre').val($('#child_selection').children(':selected').text())
  // });

  $("#down").change(function() {
    getSelectData($(this));
  });

  function getSelectData(el) {
    console.clear();
    var $option = el.find("option:selected");
    var text = $option.text();
    console.log(text);

    switch (text) {
      case "PESO":
        list(AFIRMACIONES);
        break;
      case "ZURDO":
        list(AFIRMACIONES2);
        break;
      case "EDO_CIVIL":
        list(AFIRMACIONES3);
        break;

      default:
        $("#child_selection").html("");
        break;
    }
  }

  function list(array_list) {
    console.log(array_list);
    $("#child_selection").html("");
    $(array_list).each(function(i) {
      $("#child_selection").append(
        '<option value="' + array_list[i].value + '">' + array_list[i].display + "</option>"
      );
    });
   $('#txtnombre').val($('#child_selection').children(':selected').text())
  }
  
  $('#child_selection').change(function() {
        $('#txtnombre').val($(this).children(':selected').text())

        //$("#txtnombre").hide();

        // }

      })
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <select id="down">
      <option value="1">PESO</option>
      <option value="2">ZURDO</option>
      <option value="3">EDO_CIVIL</option>
    </select>                                   
  
                             <select name="child_selection" id="child_selection">
                              </select>

                             <input id="txtnombre" type="text" class="form-control autofocus form-control-round F1" placeholder="SIN INFORMACION"/>
                             <input id="txtnombre2" type="text"  style="visibility:hidden" class="form-control autofocus form-control-round F1" placeholder="SIN INFORMACION"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...