Bunun neden işe yaramadığına biraz daha derinlemesine bakacağım çünkü haha bilmeden gece uyuyamayan türden biriyim. 1/29/2013 tarihinde yayınlanan jQuery validate 1.10 ve Microsoft jQuery Unobtrusive Validation 2.0.20710.0 kullanıyorum.
JQuery Validate setDefaults yöntemini arayarak başladım ve sonlandırılmamış dosyanın 261 satırında buldum. Tüm bu işlev gerçekten json ayarlarınızı $.validator.defaults
jQuery Validate içinde tanımlanan diğer varsayılanlarla birlikte ignore özelliği ": hidden" olarak ayarlanmış olarak başlatılan mevcut ile birleştirmektir . Bu noktada görmezden geldik. Şimdi bu defaultults özelliğinin nereye başvurulduğunu görelim.
Nereye $.validator.defaults
başvurulduğunu görmek için kod üzerinden izlediğimde . Sadece form oluşturucu için yapıcı tarafından kullanıldığını fark ettim, satır 170 jQuery doğrulanmamış dosya doğrulamak.
// constructor for validator
$.validator = function( options, form ) {
this.settings = $.extend( true, {}, $.validator.defaults, options );
this.currentForm = form;
this.init();
};
Bu noktada bir doğrulayıcı ayarlanan varsayılan ayarları birleştirir ve form doğrulayıcıya ekler. Doğrulama, vurgulama, vurgulama vb. Yapan koda baktığınızda, hepsi ignore özelliğini çekmek için validator.settings nesnesini kullanır. Bu nedenle, yoksaymayı setDefaults yöntemiyle ayarlayacağımızdan emin olmalıyız, bu durumda $ ("form"). Validate () çağrılmadan önce gerçekleşmelidir.
Asp.net MVC ve göze çarpmayan eklentiyi kullanıyorsanız, belgede validate adının çağrıldığı javascript'e baktıktan sonra fark edeceksiniz. Ben de benim setDefaults belgede çağırdım. Zaten komut dosyaları, jquery doğrulamak ve mütevazi sonra çalıştırılacak bloğu çünkü html içinde bu komutları çağrı olandan önce tanımladım. Bu yüzden çağrımın doğrulama sırasında gizli öğeleri atlamanın varsayılan işlevselliği üzerinde hiçbir etkisi olmadı. Burada birkaç seçenek var.
Seçenek 1 - Juan Mellado'nun işaret ettiği gibi, belgenin dışında bir çağrı alabilirsiniz. Zaten kod yüklenir yüklenmez çalıştırılacaktır. Tarayıcılar şimdi paralel komut dosyası yükleme yapabiliyoruz çünkü bu zamanlama hakkında emin değilim. Eğer biraz temkinliysem lütfen beni düzeltin Ayrıca, muhtemelen bunun etrafında yollar var ama ihtiyaçlarım için bu yolda gitmedim.
Seçenek 2a - Gözlerimdeki güvenli bahis $.validator.setDefaults({ ignore: '' });
, belgenin içinin yerini değiştirmek. Zaten olay ile $("form").data("validator").settings.ignore = "";
. Bu, verilen form için öğelerinizde her doğrulama yapılırken jQuery validate tarafından kullanılan ignore özelliğini değiştirir.
Seçenekler 2b - Kodu biraz daha inceledikten sonra $("form").validate().settings.ignore = "";
, ignore özelliğini ayarlamanın bir yolu olarak da kullanabilirsiniz . Bunun nedeni, validate fonksiyonuna bakıldığında, form elemanı için $.data()
fonksiyon aracılığıyla bir validator nesnesinin önceden kaydedilip kaydedilmediğini kontrol etmesidir . Form öğesiyle depolanmış bir doğrulayıcı nesne bulursa, başka bir tane oluşturmak yerine doğrulayıcı nesnesini döndürür.