2010-12-03 15 views
7

जबकि मैं चुनिंदा तत्व पर क्लिक करता हूं, मुझे चयनित तत्व का पुराना मान याद रखना होगा।
यह कोड आईई के बजाय एफएफ, क्रोम और ओपेरा में काम करता है।
jquery क्लिक (OLD VALUE याद रखें)

  1. पुराना मान याद रखें।
  2. चयन विकल्प चुनें और पुराने मान को एक चयनित विकल्प के साथ याद रखें!

कोड:

$(document).ready(function() { 
     $('#viewTableOrders tr td > select').click(function() { 
      oldCurrentPath = $(this).val(); 
      oldId = $(this).attr('title'); 
      oldCurrentDate = $('#viewTableOrders tr#vagon' + oldId + '> td >input.input_ver1').val(); 
      dataAjax = {}; 
     }); 


     /* event on change path */ 
     $('#viewTableOrders tr td > select').change(function() { 
      //do something... + old value 
     }); 
    }); 

उत्तर

11

ऐसा लगता है कि समस्या की तरह है कि 2 क्लिक (नई विकल्प चुनने) से पहले सक्रिय होगा बदल घटना।

क्लिक के बजाय फोकस उपयोग करके देखें:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
<select> 
<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
</select>Old value is:<span></span> 
<script> 
$(document).ready(
    function() 
    { 
    $('select').focus(function() 
         { 
          //store old value 
         $(this).data('oldValue',$(this).val());} 
        ); 
    $('select').change(function() 
         { 
          //do something 
         $('span').text($(this).data('oldValue')); 
          //trigger focus to set new oldValue 
         $(this).trigger('focus'); 
         }); 

    } 
); 
</script> 

+0

+1 क्योंकि मुझे अभी एहसास हुआ कि मैंने वास्तव में प्रश्न के समस्या भाग का जवाब नहीं दिया है, केवल डेटा संग्रहित करने के लिए एक अलग कार्यान्वयन की सिफारिश की है! – prodigitalson

+0

महान विचार..यह फोकस के साथ काम कर रहा है !! – Dezigo

5

मैं इसके लिए data बुनियादी ढांचे का प्रयोग करेंगे:

$('#viewTableOrders tr td > select').click(function() { 
    var old = {}; 
    old.currentPath = $(this).val(); 
    old.id = $(this).attr('title'); 
    old.currentDate = $('#viewTableOrders tr#vagon' + old.id + '> td >input.input_ver1').val(); 
    old.ajaxData = {}; 
    $(this).data('oldData', old); 

}).change(function() { 
    var oldData = $(this).data('oldData'); 
    if(typeof old == 'object'){ 
    // do stuff with oldData 
    }  
}); 
+0

धन्यवाद !! यह भी काम कर रहा है! – Dezigo

0

सवाल एक छोटे से पुराना है, लेकिन मुझे लगता है हम भी कुंजी को ऊपर से देखने की जरूरत है (उदाहरण भी prodigitalson ने सुझाव दिया डेटा का उपयोग करता)/डाउन इवेंट्स, अन्यथा चयन मूल्यों को बदलने के लिए कर्सर का उपयोग करने से पुराना मान अपडेट नहीं होता है। यह @ डॉमोले के कोड के आधार पर मेरे लिए काम किया:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
    <select> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    </select>Old value is:<span></span> 
    <script> 
    $(document).ready(
     function() 
     { 
     $('select').focus(function() 
      { 
      //store old value 
      $(this).data('oldValue',$(this).val()); 
      }); 
     $('select').change(function() 
      { 
       //do something 
       $('span').text($(this).data('oldValue')); 
       //trigger focus to set new oldValue 
       $(this).trigger('focus'); 
      }); 
     $('select').keydown(function() 
      { 
      //store old value 
      $(this).data('oldValue',$(this).val()); 
      }); 
     $('select').keydown(function() 
      { 
       //do something 
       $('span').text($(this).data('oldValue')); 
       //trigger focus to set new oldValue 
       $(this).trigger('focus'); 
      }); 

     } 
    ); 
    </script> 
संबंधित मुद्दे