programing

Bootstrap-select-변경시 이벤트를 발생시키는 방법

copyandpastes 2021. 1. 17. 12:32
반응형

Bootstrap-select-변경시 이벤트를 발생시키는 방법


저는 Bootstrap 3.0.2와 Bootstrap-select 플러그인을 사용하고 있습니다.

내 선택 목록은 다음과 같습니다 .

<select class="selectpicker" data-live-search="true" data-size="7">
  <option>Petr Karel</option>
  <option>Honza Novák</option>
  <option>David Egydy</option>
  <option>Sláva Kovář</option>
  <option>Hana Skalická</option>
  <option>Simona Kolářová</option>
  <option>Kateřina Sychová</option>
  <option>Amálka Sychová</option>
  <option>Jana Sychová</option>
  <option>Magdaléna Sychová</option>
  <option>Tereza Sychová</option>
  <option>Bohdana Sychová</option>
</select>

내 JavaScript는 다음과 같습니다 .

//inicialization of select picker
$('.selectpicker').selectpicker();

//on change function i need to control selected value
$('select.selectpicker').on('change', function(){
   var selected = $('.selectpicker option:selected').val();
   alert(selected);
});

발행물

내 문제는 변경 기능이 작동하지 않는다는 것입니다. 그것은 아무것도하지 않으며 혼자서 해결책을 찾을 수 없습니다.

대신 문서 준비에 넣으면 기능이 작동하는 것 같습니다. 그래서 어딘가에 실수가 있다고 생각합니다.

$('select.selectpicker').on('change', function(){

나는 또한 사용하려고했습니다.

$('.selectpicker').on('change', function(){

이 선택 접두사 없이는 변경되지 않습니다.

최신 정보

해결책은 jquery 코드를 document.ready(). Kartikeya 덕분에


Bootstrap Select가 초기화되면 원래 <select>요소와 함께 실행되는 사용자 지정 div 집합을 빌드하고 일반적으로 두 입력 메커니즘간에 상태를 동기화합니다.

BS 선택 요소

즉, 부트 스트랩 선택에서 이벤트를 처리하는 한 가지 방법은 누가 업데이트했는지에 관계없이 수정하는 원래 선택에서 이벤트를 수신하는 것입니다.

솔루션 1-네이티브 이벤트

change이벤트를 수신하고 다음 같이 javascript 또는 jQuery를 사용하여 선택한 값 가져옵니다 .

$('select').on('change', function(e){
  console.log(this.value,
              this.options[this.selectedIndex].value,
              $(this).find("option:selected").val(),);
});

* 참고 : DOM에 의존하는 모든 스크립트와 마찬가지로 실행하기 전에 DOM 준비 이벤트 를 기다려야합니다.

스택 스 니펫의 데모 :

$(function() {

  $('select').on('change', function(e){
    console.log(this.value,
                this.options[this.selectedIndex].value,
                $(this).find("option:selected").val(),);
  });
  
});
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/css/bootstrap.css" rel="stylesheet"/>
<link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/css/bootstrap-select.css" rel="stylesheet"/>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/js/bootstrap.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/js/bootstrap-select.js"></script>

<select class="selectpicker">
  <option val="Must"> Mustard </option>
  <option val="Cat" > Ketchup </option>
  <option val="Rel" > Relish  </option>
</select>

해결 방법 2-부트 스트랩 선택 사용자 지정 이벤트

마찬가지로 이 응답 암시 , 부트 스트랩 선택은 자신의 세트가 사용자 정의 이벤트 를 포함 changed.bs.select:

선택 값이 변경된 후 발생합니다. event, clickedIndex, newValue, oldValue를 통과합니다.

다음과 같이 사용할 수 있습니다.

$("select").on("changed.bs.select", 
      function(e, clickedIndex, newValue, oldValue) {
    console.log(this.value, clickedIndex, newValue, oldValue)
});

스택 스 니펫의 데모 :

$(function() {

  $("select").on("changed.bs.select", 
        function(e, clickedIndex, newValue, oldValue) {
      console.log(this.value, clickedIndex, newValue, oldValue)
  });

});
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/css/bootstrap.css" rel="stylesheet"/>
<link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/css/bootstrap-select.css" rel="stylesheet"/>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/js/bootstrap.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/js/bootstrap-select.js"></script>

<select class="selectpicker">
  <option val="Must"> Mustard </option>
  <option val="Cat" > Ketchup </option>
  <option val="Rel" > Relish  </option>
</select>


이것이 내가 한 일입니다.

$('.selectpicker').on('changed.bs.select', function (e, clickedIndex, newValue, oldValue) {
    var selected = $(e.currentTarget).val();
});

가장 간단한 해결책은 다음과 같습니다.

$('.selectpicker').trigger('change');


$("#Id").change(function(){
    var selected = $('#Id option:selected').val();
    alert(selected);           
});

나는 이것이 당신이 필요하다고 생각합니다.


내 구현

import $ from 'jquery';

$(document).ready(() => {
  $('#whatDescribesYouSelectInput').on('change', (e) => {
    if (e.target.value === 'Other') {
      $('#whatDescribesYouOtherInput').attr('type', 'text');
      $('#specifyLabel').show();
    } else {
      $('#whatDescribesYouOtherInput').attr('type', 'hidden');
      $('#specifyLabel').hide();
    }
  });
});

참조 URL : https://stackoverflow.com/questions/25720986/bootstrap-select-how-to-fire-event-on-change

반응형