2016-03-30 18 views
0

olarak adlandırıldığında çalıştırılamıyor ve bu sitenin yeni bir köprüsüyüm, bu yazıyı geliştirmek için yapmam gereken şeyler olup olmadığını bana bildirin. Her neyse, sitemde sıkça kullanılan bir işlev var, bu yüzden onu global bir değişkende sakladım ve belirli bir düğme tıklatıldığında onu aramak istiyorum. Kod buna benzer (aşağıya bakınız). Benim sorunum, buton tıklatmanın işlevi çağırmayı denediğini doğrulayabilsem de, aslında hiç bir şekilde arama yapılmadığıdır (uyarılarımın hiçbiri ateşlenmez ve metin alanlarındaki değişiklikler kaydedilmez). Bütün bunlar bir yere aptal bir hata yaptı mı ... $ (belge) .read (fonksiyonunda yer alan, ya da orada yanlış açıkça yapıyorum şeydir edilir?Genel değişkende saklanan işlev,

$(document).ready(function() { 

//Description: 
//Global wrapper variable that contains all global functions. These include: 
// 1. saveAll: Saves all values not stored in session data to hidden fields  - this includes 
//   all added ingredient information. This allows us to manually pass values between 
//   client and server to save to db and also means we can eliminate Null values in table 
//   storage using a manual delimiter. 
//---------------------------------------------------------------------------------------------- 
var Global = (function() { 
    return { 
     saveAll: function() { 
      alert("entering save"); 
      //start by creating an array and initializing the length of the for loop 
      var saveValues = []; 
      var numVals = $('#HidRowCt').val(); 

      alert("numVals: " + numVals); 
      //Now loop through each ingredient row and create a string containing all textbox values 
      //in this case, we'll do so by creating an array and then combining the values with a custom delimeter 
      //the strings will then be saved, one by one, into the saveValues array, which will be serialized as a JSON object, 
      //stored in a hidden field, and passed to the server 
      for (i = 1; i < numVals; i++) { 
       var TxtIngName = $('#TxtIngName' + i).val(); 
       var TxtIngNumUnits = $('#TxtIngNumUnits' + i).val(); 
       var SelIngUnits = $('#SelIngUnits' + i).val(); 
       //make temporary array and string 
       var saveArr = new Array(TxtIngName, TxtIngNumUnits, SelIngUnits); 
       var saveStr = saveArr.join("-||-"); 

       saveValues.push(saveStr); 
      } 

      alert("Save Values: " + saveValues); 
      //this will automatically escape quotes, delimmited with "," 
      var jsoncvt = JSON.stringify(saveValues); 


      $("#HidSave").val(jsoncvt); 
     } 
    }; 
}); 

//---------------------------------------------------------------------------------------------- 
//Description: 
//Hijack the click event for the save button. Saves values not saved in session data. 
// 
//Functions: 
// Global.saveAll() 
//---------------------------------------------------------------------------------------------- 
$("#SaveChanges").data.clickEvent = $("#SaveChanges").attr('onClick'); //save onclick event locally 
$("#SaveChanges").removeAttr('onClick'); //and remove the onclick event 
$('#SaveChanges').on('click', function (event) { 

    Global.saveAll(); 
    //eval($("#SaveChanges").data.clickEvent); //now go ahead with the click event 
}); 

** Eh, asla neden bu işe yaramadı anladım, ama ....

Sadece global değişkeni kaldırdım ve saveAll() için ayrı bir işlev oluşturdum ve işe yarıyor. İlginçtir ki, kullandığım aynı kodu kullanan ikinci bir uygulama var. Global.saveAll (aynı gizemli) ve iyi çalışıyor, bu yüzden benim önceki satırlarımda alışılmadık birşeyler olmalıyım

Önerileriniz için teşekkürler! Değer kapsamı hazır kapama içinde olacak şekilde bildirdiğinden, window.Global = ... ayarlamayı deneyin.

Daha sonra kullanabilmeniz gerekir.

+1

Tıklandığında herhangi bir hata var mı? – Bergi

+0

Sizin 'i'niz 'var' eksik, ama sorun bu değil. – Bergi

+0

Tam olarak ne demek istiyorsun "* Bütün bunlar $ (document) .read (function *") içinde yer alıyor, bu kodu da gösterebilir misiniz? Bu, 'var Global' olmadığından problem olabilir daha sonra küresel – Bergi

cevap

0
+0

Bazı nedenlerden dolayı hala çalışmıyor. – Jirara

+0

Kodunuzu https://plnkr.co/ veya benzeri bir şeye koyabilir misiniz? Ayrıca, $ ('# SaveChanges') gerçekten var mı? – wli

+0

Gerçekten plnkr.co'nun ne olduğundan emin değilim, bu yüzden emin değilim, ama $ ('# SaveChanges') var (yazım denetimi yaptım en az 100 kez şimdi T.T bu sorun oldu). – Jirara

0

Genel değişkeni kaldırdım ve saveAll() için ayrı bir işlev oluşturdum ve çalışıyor.

+0

Neyi yaptığınızı anlamak için daha havalı olabilir, özellikle de global ad alanını kirletmemek için çalışıyor olmanızdan beri. –

İlgili konular