2010-10-12 1 views
0

Je souhaite enregistrer les valeurs nouvellement entrées afin de pouvoir les réutiliser. Cependant, lorsque je tente de faire ce qui suit, il ne fonctionne pas:Valeur de la zone de texte persistante à l'aide de jQuery

// el is a textbox on which .change() was triggered 
$(el).attr("value", $(el).val()); 

Lorsque la ligne exécute, pas d'erreurs sont générées, mais Firebug ne montre pas que l'attribut de valeur de el a changé . J'ai essayé les suivantes aussi, mais pas de chance:

$(el).val($(el).val()); 

La raison pour laquelle je suis en train de le faire est de préserver les valeurs dans les zones de texte quand j'ajouter de nouveaux contenus dans un récipient en utilisant jTemplates. L'ancien contenu est enregistré dans une variable, puis ajouté au conteneur. Cependant, toutes les valeurs entrées dans les zones de texte se perdent

var des_cntr = $("#pnlDesignations"); 
    old = des_cntr.html(); 
    des_cntr.setTemplate($("#tplDesignations").html()); 
    des_cntr.processTemplate({ 
           Code: code, 
           Value: val, 
           DivisionCode: div, 
           Amount: 0.00 
          }); 
    des_cntr.prepend(old); 

C'est le modèle:

<div id="pnlDesignations"> 
    <script type="text/html" id="tplDesignations"> 
     <div> 
      <label>{$T.Value} $</label> 
      <input type="text" value="{$T.Amount}" /> 
      <button>Remove</button> 
      <input type="hidden" name="code" value="{$T.Code}" /> 
      <input type="hidden" name="div" value="{$T.DivisionCode}" /> 
     </div> 
    </script> 
</div> 
+3

Huh? Vous essayez de définir un champ de saisie à sa valeur actuelle? –

+0

J'ai modifié le post pour mieux expliquer ce que j'essaie d'accomplir ici. Est-ce que cela clarifie cela? – alkos333

Répondre

1

Vous souhaitez enregistrer la valeur précédente et utiliser dans le prochain événement change?

Cet exemple utilise .data pour enregistrer la valeur précédente. See on jsFiddle.

$("input").change(function(){ 
    var $this = $(this); 

    var prev = $this.data("prev"); // first time is undefined 

    alert("Prev: " + prev + "\nNow: " + $this.val()); 

    $this.data("prev", $this.val()); // save current value 
}); 

jQuery .data

1

Si vous voulez ancienne/initiale Valeur de zone de texte, vous pouvez utiliser le code de ligne unique comme suit. Var current_amount_initial_value = $ ("# form_id"). Find ("entrée [type = 'texte'] id * = 'current_amount']"). Prop ("defaultValue"); Si vous voulez une valeur actuelle dans la zone de texte, vous pouvez utiliser le code $ ("# form_id"). Find ("input [type = 'text'] id * = 'current_amount']"). Val()

Questions connexes