Jquery select box 이전 값 - Jquery select box ijeon gabs


selectbox를 변경할때 이전값을 확인하는 소스 입니다.

Show

    $("select[name='test']").on('focus'function () {

    console.log("before: "+this.value);

    }).change(function() {

    console.log("after: "+this.value);

    });

     

    Posted by husks

    1. change 이벤트

    $("#SelectBoxID").change( function() {
    
       //TODO
    
    });

    2. bind 를 이용한 이벤트

    $("#SelectBoxID").bind( "change", function() {
    
       //TODO
    
    });

    3. on 을 이용한 이벤트

    $("#SelectBoxID").on( "change", function() {
    
       //TODO
    
    });

    * change 이벤트시 이전값 가져오기

    var previous; 
    
    $(".status").on('focus', function () { 
    
       previous = this.value;  
       
    }).change(function() { 
    
       var rowIdx = this.id; 
    
       var result = confirm("상태를 변경 하시겠습니까?"); 
       
       if(result ){   //확인 클릭 시 
            
       } else{      //취소 클릭 시 
            $("#"+rowIdx).val(previous).prop("selected", true);   //이전값으로 돌리기
       }); 
       
    });


    웹개발/Javascript

    2014. 8. 6. 11:33

    (function () {
        var previous;
    
        $("select").on('focus', function () {
            // Store the current value on focus and on change
            previous = this.value;
        }).change(function() {
            // Do something with the previous value after the change
            alert(previous);
    
            // Make sure the previous value is updated
            previous = this.value;
        });
    })();

    참고) http://stackoverflow.com/questions/4076770/getting-value-of-select-dropdown-before-change


    jquery, selectbox change시 confirm() 사용하였을 경우.... (특히 수정화면?)

    confirm() --> No("취소") 선택 시 취소 했음에도 원래의 값으로 돌아오지 않음...

    그래서 최초 선택되어 있던 값으로 되돌리기(undo) 위해서 change() + focus() 이벤트를 사용하면 해결됨....

    $(document).ready(function(){

                 //코드 변경

    var prev_val ;

    $('#cd').focus(function(){

    prev_val = $(this).val();

    }).change(function(){

    $(this).blur();

    if(confirm("입력된 값이 초기화 됩니다. 변경하시겠습니까?")){

           // Todo

                   alert('changed');

    }else{

                   // 기존에 선택한 값으로 Undo

           $(this).val(prev_val);

                   alert('unchanged');

           return false;

    }

    });

    });

    내가 달성하고자하는 것은 <select>드롭 다운이 변경 될 때마다 변경하기 전에 드롭 다운 값을 원한다는 것입니다. 1.3.2 버전의 jQuery를 사용하고 on change 이벤트를 사용하고 있지만 내가 얻은 값은 변경 후입니다.

    <select name="test">
    <option value="stack">Stack</option>
    <option value="overflow">Overflow</option>
    <option value="my">My</option>
    <option value="question">Question</option>
    </select>

    onchange 이벤트에서 스택으로 변경할 때 (즉, 스택으로 변경했을 때) 현재 My 옵션이 선택되어 있다고 가정 해 보겠습니다.이 경우 이전 값을 원합니다.

    이것이 어떻게 달성 될 수 있습니까?

    편집 : 내 경우에는 같은 페이지에 여러 개의 선택 상자가 있고 모든 항목에 동일한 항목이 적용되기를 원합니다. 또한 모든 선택은 ajax를 통해 페이지를로드 한 후에 삽입됩니다.



    답변

    포커스 이벤트를 변경 이벤트와 결합하여 원하는 것을 달성하십시오.

    (function () {
        var previous;
    
        $("select").on('focus', function () {
            // Store the current value on focus and on change
            previous = this.value;
        }).change(function() {
            // Do something with the previous value after the change
            alert(previous);
    
            // Make sure the previous value is updated
            previous = this.value;
        });
    })();

    실례 : http://jsfiddle.net/x5PKf/766


    답변

    이것에 전역 변수를 사용하지 마십시오-여기에 데이터에 이전 값을 저장하십시오 예 : http://jsbin.com/uqupu3/2/edit

    심판의 코드 :

    $(document).ready(function(){
      var sel = $("#sel");
      sel.data("prev",sel.val());
    
      sel.change(function(data){
         var jqThis = $(this);
         alert(jqThis.data("prev"));
         jqThis.data("prev",jqThis.val());
      });
    });

    방금 페이지에 많은 선택이 있음을 보았습니다.이 방법은 각 선택에 대해 선택 값의 데이터에 이전 값을 저장하기 때문에 효과가 있습니다.


    답변

    나는 Avi Pinto의 솔루션을 사용합니다. jquery.data()

    초점을 사용하는 것은 유효한 해결책이 아닙니다. 처음에는 옵션을 변경할 때 작동하지만 해당 선택 요소를 유지 한 상태에서 “위”또는 “아래”키를 누릅니다. 포커스 이벤트를 다시 거치지 않습니다.

    따라서 솔루션은 다음과 같이 보입니다.

    //set the pre data, usually needed after you initialize the select element
    $('mySelect').data('pre', $(this).val());
    
    $('mySelect').change(function(e){
        var before_change = $(this).data('pre');//get the pre data
        //Do your work here
        $(this).data('pre', $(this).val());//update the pre data
    })


    답변

    손으로 값을 추적하십시오.

    var selects = jQuery("select.track_me");
    
    selects.each(function (i, element) {
      var select = jQuery(element);
      var previousValue = select.val();
      select.bind("change", function () {
        var currentValue = select.val();
    
        // Use currentValue and previousValue
        // ...
    
        previousValue = currentValue;
      });
    });


    답변

     $("#dropdownId").on('focus', function () {
        var ddl = $(this);
        ddl.data('previous', ddl.val());
    }).on('change', function () {
        var ddl = $(this);
        var previous = ddl.data('previous');
        ddl.data('previous', ddl.val());
    });


    답변

    이벤트 “live”를 사용하고 있는데 솔루션은 기본적으로 Dimitiar와 유사하지만 “focus”를 사용하는 대신 “click”이 트리거 될 때 이전 값이 저장됩니다.

    var previous = "initial prev value";
    $("select").live('click', function () {
            //update previous value
            previous = $(this).val();
        }).change(function() {
            alert(previous); //I have previous value 
        });


    답변

    드롭 다운 ‘변경시’액션 함수를 작성하기 전에 현재 선택된 드롭 다운 값을 선택한 jquery로 전역 변수에 유지하십시오. 함수에서 이전 값을 설정하려면 전역 변수를 사용할 수 있습니다.

    //global variable
    var previousValue=$("#dropDownList").val();
    $("#dropDownList").change(function () {
    BootstrapDialog.confirm(' Are you sure you want to continue?',
      function (result) {
      if (result) {
         return true;
      } else {
          $("#dropDownList").val(previousValue).trigger('chosen:updated');
         return false;
             }
      });
    });