2017-09-16 1 views
0

Ich möchte den Wert einer Eingabe mithilfe von jQuery abrufen.Abrufen des Eingabewerts mithilfe von jQuery

Hier ist der HTML:

<input type="text" name="a" id="a" /> 
<input type="button" name="b" id="b" value="Click here"/> 

Hier ist die jQuery:

$(document).ready(function() { 

    var normal=$('#a').val(); 
    $('#b').on("click", function() { 
      alert(normal); 
    }); 

}); 

aus irgendeinem Grund die alert(normal); nicht funktioniert während alert($('#a').val()); tut. Warum? Ist nicht normal und $('#a').val(); den gleichen Wert halten?

Falls Sie eine jsfiddle wollen: http://jsfiddle.net/L2uX4/20/

Dank

+0

, weil es nicht dynamisch ist .... Es ist nicht neu binden, den Wert, den Sie erhalten zu diesem Zeitpunkt ist das, was Sie haben, bis Sie die Variable erneut überschreiben. – epascarello

Antwort

1

Sie zuweisen normal auf document.ready() und nicht die Neuzuweisung, wenn Sie klicken, wird so normal, was Wert, den Sie in das Eingabefeld geben, wenn die Seite Ladungen.

0

diesen Code Versuchen

$(document).ready(function() { 


     $('#b').on("click", function() { 
     var normal=$('#a').val(); 
     alert(normal); 
     }); 

    }); 
2

wenn Sie var normal außerhalb der Klickfunktion Handler dann der Anfangswert leer wird erklären, wie kein Wert im Textfeld gibt es, sobald das DOM bereit ist. Wenn Sie es jedoch im Ereignishandler click deklarieren, wird der Wert zugewiesen, sobald Sie etwas in das Textfeld eingegeben und auf die Schaltfläche geklickt haben. Der Code unten funktioniert für mich

$(document).ready(function() { 
 

 
    
 
    $('#b').on("click", function() { 
 
      var normal= $('#a').val(); 
 
     alert(normal); 
 
     // same as alert($('#a').val()); 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" name="a" id="a" /> 
 
<input type="button" name="b" id="b" value="Click here"/>

0

Ja, Sie haben Recht,

das Textfeld hatte auf Last einen Text mit id= a zur Verfügung gestellt.

damit meine ich etwas entlang der Linien von

<input type="text" name="a" id="a" value= "foo"/> 

Fiddle: http://jsfiddle.net/Jayas/vhjm8v31/2/

Nun, wenn Sie Clickhere Knopf drücken wird es foo anzuzeigen.

In Ihrem Fall

  1. Wenn Sie den Wert von a-normal das Textfeld zuweisen ist leer.
  2. Sie haben keine Handler oder Ereignisse angeschlossen, um die Variable normal auf etwas, das getippt wird oder nachdem etwas eingegeben wurde, zurückzusetzen/setzen.damit meine ich etwas entlang der Linien den Wert auf input change entlang der Linien von

    $(document).ready(function(){ 
    $('#a').bind('input propertychange', function() { 
         normal = $('#a').val(); 
        } 
    }) 
    

Fiddlehttp://jsfiddle.net/Jayas/vhjm8v31/4/

tl gespeichert aufweist: dr - Rebinding des Textes zu den deklarierten Variable nicht "automatisch" passieren

So jetzt, wenn Sie auf den Button af klicken ter Neuzuweisung normal Sie sehen den typisierten Wert.

oder alternativ können Sie den Wert der normalen auf Click-Ereignis erfassen, wie Sie es bereits haben, nach dem Vorbild der

$('#b').on("click", function() { 
     var normal = $('#a').val(); 
     alert(normal); 
    }); 
Verwandte Themen