Jquery

2016-03-31 11 views
2

'da bir olaydan diğerine bir bayrak geçirin "input_id" demek olan bir formda Metin Girişi alanım varsa. Sayfayı yüklemesi sırasında alanıJquery

ile doldururdum. "Form_submit" kimliğini kullanarak formu gönderirken, alanın herhangi bir şekilde değiştirilip değiştirilmediğini belirlemek istiyorum. Böylece değişimle ilgili özel bir eylemde bulunacağım.

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 
} 

Peki nasıl bir olay bir bayrak set yapmak ve küresel değişkeni kullanmadan başka okudum?

Şimdiden teşekkürler

+2

yüzden soru nedir? –

+0

Bir olayda bir bayrak ayarlamak ve başka bir olayda okumak istiyorum. Bunu nasıl yapabilirim –

+0

Geçerli değeri "defaultValue" özelliğiyle karşılaştırmanın basit bir seçeneği için giderseniz, etrafında bir şey iletmeniz gerekmez. (Dikkat edin, bu, jQuery nesnesinin değil, HTML öğesi nesnesinin bir özelliğidir. Bu nedenle, söz konusu mülke erişmeden önce, "$ (" # input_id ") [0] .defaultValue' adlı öğeye erişmeniz gerekir.) – CBroe

cevap

3

kullanabilirsiniz .data() ,

var submit = $("#form_submit"); 

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

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

Teşekkürler, bu hile yapar! –

+0

@BarathBushan Yardımlarınızdan memnun oldum! :) –

+0

'Alanın herhangi bir şekilde değiştirilip değiştirilmediğini belirlemek istiyorum, bir kullanıcı bu değişiklikleri geri aldıktan sonra bir değişiklik yaparsa bu numara yanlış olur. –

2

Neden bir üst kapsam bayrağı değil?

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

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

    } else { 

    } 
} 
+1

Bu seçeneği düşündüm. Ama ben global değişkenleri kullanmak istemedim –

5

Seçeneklerden biri form verilerini özelliğini kullanmak olacaktır:

$("#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

"En yakın" işlevi göstermek için teşekkürler –