Не удалось установить значение параметра select с помощью jquery и PHP - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть проблема.Мне нужно установить значение select как текст в поле select, используя jQuery, но я не могу этого сделать.

<select name="countryCode" class="chosen-select" id="countryCode" required>
  <?php foreach ($countrydata as $key => $value) {
     if ($value['con_code']=='IN') {
          $select='selected';
      }else{
          $select='';
     }
 ?>
  <option data-text="<?php echo $value['country']; ?>" value="<?php echo $value['dial_code']; ?>" <?php echo $select; ?>><?php echo $value['country']; ?></option>
 <?php } ?>
</select>

Моя часть сценария приведена ниже.

$('#countryCode').find(':selected').html($('#countryCode').find(':selected').attr('value')); // already changed onload   
 $('#countryCode').on('change mouseleave', function () {
       $('#countryCode option').each(function () {
           $(this).html($(this).attr('data-text'));
       });
       $('#countryCode option:selected').html($('#countryCode option:selected').attr('value'));
       $(this).blur();
   });
   $('#countryCode').on('focus', function () {
       $('#countryCode option').each(function () {
           $(this).html($(this).attr('data-text'));
       });
   });

Что янеобходимо, чтобы, когда пользователь выбирает какой-либо текст, его значение будет показано пользователю.В моем коде это не происходит так.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

должно быть примерно так:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(function(){
  $('#countryCode').on('change', function(){
    var val = $(this).val();
    $(this).find("option").each(function(){
      $(this).text($(this).attr("data-text"));
    });
    $(this).find(":selected").text(val);
  }).trigger("change");  
});
</script>
<select id="countryCode" class="chosen-select">
    <option data-text="A Text" value="A value">A Text</option>
    <option data-text="B Text" value="B value">B Text</option>
    <option data-text="C Text" value="C value" selected>C Text</option>
</select>
0 голосов
/ 15 ноября 2018

1-й: небольшая оптимизация вашего JS:

$('#countryCode option:selected').html($(this).val());// already changed onload

Теперь, как выбрать опцию, используя JS:

$(function() {
  var $sel = $('.chosen-select');
  $('#exists').click(function() {
    $sel.val('option3');
    console.log($sel.val());
  });
  $('#disabled').click(function() {
    $sel.val('option2');
    console.log($sel.val());
  });
  $('#noExist').click(function() {
    $sel.val('option5');
    console.log($sel.val());
  });
  $sel.on('change', function() {
    console.log($sel.val());
  });
});
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<button id="exists">Select 3rd option</button>
<button id="disabled">Select disabled option</button>
<button id="noExist">Select inexistant option</button>
<select class="chosen-select">
  <option>option1</option>
  <option disabled>option2</option>
  <option>option3</option>
  <option selected>option4</option>
</select>
<button onclick="console.clear();">X</button>

Как видите, можно выбирать только существующие и не отключенные опции.

...