2016-03-31 15 views
2

Wenn ich ein Text-Eingabefeld in einem Formular mit ID habe sagen "Input_id". Während des Ladens der Seite würde ich das Feld mit den vorhandenen Daten füllenÜbergeben Sie ein Flag von einem Ereignis zu einem anderen in Jquery

Beim Absenden des Formulars mit einem Button der ID "form_submit", möchte ich feststellen, ob das Feld in irgendeiner Weise geändert wurde. So würde ich besondere Maßnahmen in Bezug auf die Veränderung ergreifen.

In Jquery: 

$("#input_id").on("keyup",function(){ 
    //set a flag to indicate the field is altered 
}) 

$("#form_submit").on("click",function(){ 
    //check flag to see if #input_id is changed 
} 

Also wie setze ich ein Flag in einem Ereignis und lese es in einem anderen, ohne eine globale Variable zu verwenden?

Vielen Dank im Voraus

+2

so was ist die Frage? –

+0

Ich möchte ein Flag in einem Ereignis setzen und es bei einem anderen Ereignis lesen. Wie mache ich das? –

+0

Sie müssen nichts weiterreichen, wenn Sie nur die einfache Option verwenden, den aktuellen Wert mit der Eigenschaft 'defaultValue' zu ​​vergleichen. (Beachten Sie, dass dies eine Eigenschaft des HTML-Elementobjekts und nicht des jQuery-Objekts ist. Daher müssen Sie vor dem Zugriff auf diese Eigenschaft den Wert de $ referenzieren, $ ("# input_id") [0] .defaultValue'.) – CBroe

Antwort

3

können Sie .data() für diesen Zweck verwenden,

var submit = $("#form_submit"); 

$("#input_id").on("keyup",function(){ 
submit.data("changed",true); 
}); 

submit.on("click",function(){ 
    if($(this).data("changed")){ //do something } 
} 
+1

Danke, das macht den Trick! –

+0

@BarathBushan Froh, zu helfen! :) –

+0

'Ich möchte feststellen, ob das Feld in irgendeiner Weise verändert wurde ', was ist, wenn ein Benutzer einige Änderungen nach dem Rollback der Änderungen dann diesen Trick wird sich als falsch erweisen. –

2

Warum also nicht nur eine obere Rahmen Flagge?

var flag = false; 
$("#input_id").on("keyup",function(){ 
    // check stuff ... 
    flag = true; 
}); 

$("#form_submit").on("click",function(){ 
    if (flag) { 

    } else { 

    } 
} 
+1

Ich dachte über diese Option nach. Aber ich wollte keine globalen Variablen verwenden –

5

Eine Möglichkeit, die Formulardaten Attribut zu verwenden wäre:

$("#input_id").on("keyup",function(){ 
    //set a flag to indicate the field is altered 
    $(this).closest('form').data('changed',true); 
}) 

$("#form_submit").on("click",function(){ 
    //check flag to see if #input_id is changed 
    console.log($(this).closest('form').data('changed')); 
} 
+0

Danke, um die "engste" Funktion zu demonstrieren –

Verwandte Themen