2017-04-20 1 views
-3

J'ai une commande pour le faire mais cette commande obtient non seulement la dernière valeur obtenir tout le changement dans les éléments cliqués ou tapés.Son possible obtenir la dernière valeur cliquée ou appuyée sur tout élément dans le corps avec une commande en javascript?

Je n'ai besoin que de la dernière valeur cliquée ou tapée, est-ce possible?

Ceci est mon commande

$('body').on("click keypress",function(e){console.log(e.target.value);}); 

Par exemple, les valeurs de cible dans l'élément d'entrée obtenir la dernière valeur typée ou élément select obtenir la valeur ou la forme sélectionnée.

Ma commande get

input1 

typed a get a input 1 

typed b get ab input 1 


typed c get c input 2 

typed f get abf input 1 

typed d get cd input 2 

select check box value options m get m 

Je dois savoir comment je pouvais obtenir avec une seule commande obtenir seule la dernière partie dans cet exemple

est-entrée 2 valeur cd input1 valeur ABF vérifier la valeur m

par exemple si je choisis dropdown ma commande obtiennent val ue rouge et choisissez la même liste déroulante à nouveau obtenir bleu puis mes valeurs d'enregistrement de commande rouge et bleu; mais je ne le dernier besoin pour tous les éléments qui existent dans le corps

Je reefeer la dernière valeur modifiée ou élément (menu déroulant, case à cocher ou entrée, etc.)

+1

Qu'est-ce que la dernière valeur moyenne? – evolutionxbox

+1

les valeurs de la cible par exemple dans l'élément d'entrée obtiennent la dernière valeur tapée ou dans l'élément select obtiennent la valeur – zzero

+1

cette surveillance chaque changement et obtiennent chaque valeur dont j'ai besoin pour obtenir seulement la dernière valeur – zzero

Répondre

2

Vous pouvez facilement les stocker dans un objet. Le seul problème avec mon approche est qu'ils ont tous besoin de classes ou d'ID différents. La vraie question est, pourquoi prendre cette approche à tous?

$(document).ready(function() { 
 

 
    var last_data = {}; 
 

 
    function store_update(id_class, value) { 
 
    if (value !== last_data[id_class]) { 
 
     last_data[id_class] = value 
 
    }; 
 
    console.log(last_data); 
 
    } 
 

 
    function getID(obj) { 
 
     try { 
 
      var id_class = $(obj).attr('id'); 
 
      if (!id_class) { 
 
      id_class = $(obj).attr('class'); 
 
      } 
 
      return id_class; 
 
     } catch (ex) { 
 
     return undefined; 
 
     } 
 
    } 
 

 
    $('input[type="text"], textarea').on('keyup', function(e) { 
 
    var id_class = getID(this); 
 
    if (id_class) { 
 
     store_update(id_class, e.key); 
 
    } 
 
    }); 
 
    
 
    $('input[type="checkbox"]').on('change',function() { 
 
    var id_class = getID(this); 
 
    if (id_class) { 
 
     store_update(id_class, $(this).prop('checked')); 
 
    } 
 
    }); 
 
    
 
    $('select').on('change',function() { 
 
    var id_class = getID(this); 
 
    if (id_class) { 
 
     store_update(id_class, this.value); 
 
    } 
 
    }); 
 

 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type='text' class='inp1' /> 
 
<input type='text' class='inp2' /> 
 
<input type='text' class='inp3' /> 
 
<input type='text' class='inp4' /> 
 
<input type='text' class='inp5' /> 
 
<input type='text' class='inp6' /> 
 
<input type='text' class='inp7' /> 
 
<input type='text' class='inp8' /> 
 
<input type='text' class='inp9' /> 
 
<input type='text' class='inp10' /> 
 
<select class='myselect'> 
 
<option value='1'>test 1</option> 
 
<option value='2'>test 2</option> 
 
<option value='3'>test 3</option> 
 
</select> 
 
<input type='checkbox' class='inp11' /> 
 
<input type='checkbox' class='inp12' />

Si cela est incorrect s'il vous plaît expliquer beaucoup plus clairement.

--- EDIT ---

Si l'OP veut juste la dernière valeur engagée à un élément puis utilisez

$(document).ready(function() { 
 

 
    $('input, textarea, select').on('change', function() { 
 
    
 
    if ($(this).is('[type="text"], select')) { 
 
     console.log('You just changed my value to "' + this.value + '"'); 
 
    } else if ($(this).is('[type="checkbox"]')) { 
 
     console.log('You just flagged my value to "' + this.checked + '"'); 
 
    } 
 
    }); 
 
    
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type='text' class='inp1' /> 
 
<input type='text' class='inp2' /> 
 
<input type='text' class='inp3' /> 
 
<input type='text' class='inp4' /> 
 
<input type='text' class='inp5' /> 
 
<input type='text' class='inp6' /> 
 
<input type='text' class='inp7' /> 
 
<input type='text' class='inp8' /> 
 
<input type='text' class='inp9' /> 
 
<input type='text' class='inp10' /> 
 
<select class='myselect'> 
 
    <option value='1'>test 1</option> 
 
    <option value='2'>test 2</option> 
 
    <option value='3'>test 3</option> 
 
    </select> 
 
<input type='checkbox' class='inp11' /> 
 
<input type='checkbox' class='inp12' />

+0

Salut très merci pour votre réponse, le problème est que cela ne comprend pas par exemple case à cocher ou un élément de sélection déroulant; ceci obtiennent des éléments tapés je dois obtenir le dernier élément VALUE tapé ou vérifier ou choisir pour tous les éléments avec une commande – zzero

+0

ma commande obtiens ceci le seul problème Est-ce que ma commande l'obtient mais obtient également les anciennes valeurs non seulement la dernière valeur – zzero

+0

par exemple si je choisis une liste déroulante, ma commande obtient une valeur rouge et sélectionne la même liste déroulante à nouveau devient bleue alors mes valeurs d'enregistrement de commande rouge et bleu; mais je n'ai besoin que du dernier pour tous les éléments qui existent dans le corps – zzero