Более одной функции с keyup на Jquery? - PullRequest
0 голосов
/ 26 апреля 2020

Мне нужно изменить ID входного текста, чтобы использовать две функции keyup с Jquery, например, я выбираю номер опции 1 и в своем сценарии я пишу keyup функции для id 1 и другие для числа 2, чтобы знать, работает ли я, я использую alert, но всегда работаю с идентификатором, установленным по умолчанию.

$('#selector').change(function() {
  $('#1,#2').attr('id', $(this).val());
});
$(document).ready(function() {
  $('#1').keyup(function() {
    alert("OPTION 1 SELECTED");
  });
  $('#2').keyup(function() {
    alert("OPTION 2 SELECTED");
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<select id="selector">
  <option>1</option>
  <option>2</option>
</select>
<input id="1" type="text">

Что не так?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Надеюсь, это поможет

$(document).ready(function() {
  $('#selector').change(function() {

    $('#1,#2').attr('id', this.value);
  });

  $('input[type="text"]').keyup(function() {
    alert("OPTION "+$(this).attr('id')+" SELECTED");
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<select id="selector">
  <option value="1">1</option>
  <option value="2">2</option>
</select>
<input id="1" type="text">
0 голосов
/ 26 апреля 2020

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

$('#selector').change(function() {
  $('#1,#2').attr('id', $(this).val());
});
$(document).ready(function() {
  $(document).on("keyup", '#1', function() {
    alert("OPTION 1 SELECTED");
  });
  $(document).on("keyup", '#2', function() {
    alert("OPTION 2 SELECTED");
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<select id="selector">
  <option>1</option>
  <option>2</option>
</select>
<input id="1" type="text">

Но это кажется странным способом сделать это. Почему бы просто не использовать один обработчик, который

alert("Option " + $("#selector").val() + " selected");
...