Form için birden fazla gönderim. Obbluvach veya dzherelo podіi Kіlka'yı bir formun ortasında gönderir
Gönderme yöntemine Wikklik() Formu Eşit değil düzenleme düğmesine basın. Bu yöntemle üç eylemin aşırı sigortasının yalnızca üçte biri belirlenecektir - Haraçların iletimi sunucuya. Koleksiyoncu wiki'sini oluşturmaktan suçlu olmayanlar tıklamada Oldukça anlaşılır bir şekilde gönder düğmeleri - aynı zamanda gönder düğmesini atlayarak veri göndermemiz de teşvik edilir (ki bu, konuşma noktasında hiç gerekli olabilir veya olmayabilir). Ale ve alt simgeForma gönder arama- bu zenginler ve güvensizler için. Ne kadar mantıklı olduğuna (ve bu davranışın yöntemin davranışından neden farklı olduğuna) karar vermeyeceğiz. Sıfırla(), Böl. Aşağıda), ancak ön kısma yöntemi çağıran bir mesaj yerleştirerek bu etkiyi basitçe göstermektedir. göndermek():
wikiCati yöntemi göndermek() düzgün
5.8. submit() yöntemi onSubmit göndericisini çağırmaz
Verilerin kendisi, önce bir JavaScript komut dosyası tarafından kontrol edilmeden sunucuya gönderilebilir. WikiCity Tarayıcısı Gönderim'de nasıl çalışır? Bunun için ortadaki bu noktaya kadar gitmek mümkün: document.f.onsubmit(). Aşağıdaki yöntemin aktarılması yasaktır göndermek() İlk önce değil, yalnızca onSubmit'te herhangi bir değere dönmeden veya true'ya dönmeden, başka bir deyişle false'a dönmeden çağırmaktan suçludur. Gerisini çıkarabiliriz:
Wikilicati göndermek()İlk kontrol ile Gönder
5.9. Primus viklik onSubmit, göndermeden önce()
Başlamanın başka bir yolu veri gönderme gönder düğmesini atlayan formlar (dürüst olmak gerekirse formda olmayabilir). Odağın herhangi bir metin alanında olup olmadığı formunu doldurun ve Enter tuşuna basın, ardından (çoğu tarayıcıda) Formu gönder seçeneğine tıklamanız istenecek ve Haraçların iletimi sunucuya.
Metni girin ve Enter tuşuna basın:
5.10. Enter tuşuna basarak form verilerini gönderme
Bu yöntem diğer yönteme göre daha mantıklı çalışır. göndermek(), Sunucuya gönderilen veriler onSubmit tarafından önceden doğrulanmaya tabi olmadığından.
yeniden başlatma tuşu
indirim düğmesi (Sıfırla) Yan büyütüldüğünde çalışmadığından tüm form alanlarını ilk konuma döndürmenizi sağlar. At düğmesine basmak sizi bir sonraki tarayıcı eylemleri dizisine götürecektir:
1. fikir koleksiyonunun wiki'si tıklamada bu butonda;
2. Formun Sıfırla düğmesine tıklayın;
3. Tüm form alanları için güncellenmiş değerler.
Tıklama yöntemine Wikk() Atma düğmesinde, aynı üç eylemi gerçekleştirmek için düğmeye eşit derecede sert basın:
wikiCati yöntemi tıklamak() indirim düğmeleri
5.11. İndirim düğmesinin click() yöntemine Wikk
Є formu bırakmanın yolları koçanı değirmeni Atma düğmesini atlayarak (bu noktaya kadar formda olabilir veya olmayabilir). Her şeyden önce bu kadar sıfırlama yöntemine viklik() Formda. Alternatif olarak, odak formun herhangi bir alanında veya düğmesindeyse Esc tuşuna basabilirsiniz. popo:
Metni değiştirin ve ardından Esc (veya gönder) tuşuna basın.
5.12. Esc tuşuna basarak formu bırakın
Bunu sadece formu sıfırlayarak değil aynı zamanda onReset form seçeneğine tıklayarak iki farklı şekilde nasıl yapabilirsiniz? Bu şekilde yöntem Sıfırla() Daha mantıklı ve yeniden eğitilmiş, daha düşük göndermek().
grafik düğmesi
grafik düğmesi- Bu farklı türde bir düzenleme düğmesidir. Mesele şu ki, "coristuvach" yazan düğme yerine tıklayabileceğiniz bir resim görebilirsiniz:
Ayrıca eğer koristuvach tıklamalar Grafik butonu ile sadece form alanlarına girilen veriler değil, görselin sol üst köşesinde bulunan fare göstergesinin koordinatları da sunucuya gönderilir. Maalesef bir JavaScript programında bu koordinatlara gitmek mümkün değildir. Bu koordinatlarla çalışmanız gerekiyorsa grafik düğmesi yerine ek bir konteynerin arkasında aktif bir harita oluşturmanız önerilir.
Grafik düğmelerinin bir dizi işlevi vardır. Mesela hem buton hem görsel olarak, document.f koleksiyonundaki gibi her gün kokuyorum. elementler, Yani document.images koleksiyonunda (IE 7, Mozilla Firefox). Sonuç olarak koku, form elemanlarının toplamına dahil edilmemektedir (belge.f. uzunluk), Hiçbir şekilde belgenin görüntüsü (document.images.jpg) değil. uzunluk).
Böyle bir tuşa nasıl kızılabilir? Bu, örneğin ID niteliğini ayarlayarak yapılabilir:
Ve sonra programa şunu yazdık: var butonu = belge. getElementById("D1"). Bundan sonra bu düğmenin yetkililerine, örneğin knopka.src'ye ve ayrıca knopka yöntemine dönebiliriz. tıklamak(). Saldırgan popo ne olduğunu gösteriyor tıklama yöntemi tıklama() Grafiksel “majör” butonu aynı butona basmaya eşittir, böylece arayanlar sırayla tıklanır tıklamada düğmeler, onSubmitforms ve verileri sunucuya iletir (fare imlecinin koordinatlarında başka neler iletilir?):
wikiCati yöntemi tıklamak() grafik düğmesi5.13. Grafik düğmesindeki click() yöntemini tıklayın
Bahsettiğimiz konuya bağlı olarak grafik düğmelerin parçaları nadiren kullanılıyor.
"onSubmit"ten önce standart fonksiyon addHandler / addEvent ( Temel işlevler) İşlev toplayıcıyla "İlişkili".
Yani girişe tıklandıktan sonra form gönderiminin aktif olduğu eksende sampler fonksiyonuna tıklanır,
Form.submit() yoluyla yapılıyorsa, işe yaramaz.
Neden? Bunu nasıl düzeltebilirim?
Yol boyunca yürüyorsunuz, sonra bum, “kırmızı ışıkta” (Gönderimde), ama geliyor! Pekala, onu doğal bir şekilde alırsınız - onu galmin üzerine kabartırsınız (form.submit ()), daha ileri gidersiniz ve sonra oops, bobby atlar, Galyanın içinden tekrar geçersiniz, ancak kırmızı ışık görünmez. Neden?
Nasıl düzeltilir? Tarayıcının nasıl çalıştığını düşünün; istediğiniz şekilde değil, istediğiniz şekilde çalışır. onSubmit - form, form.submit () - yalnızca tarayıcının kendisi tarafından incelenen ve gerektiğinde program tarafından kullanılabilen düşük düzeyli bir kaynak. Bu fikri neden başlatayım ki? Yani kapanmaktan çok uzak değil. Sağdaki biri bunu düşünecek, diğeri ölmek üzere. Fikir / düşünce / fikir ve yöntem örnekleyici / pedal / enstrüman - farklı kelimeler. Yöntem üzerine kitap asmaya gerek yok, burası bir deniz feneri. En basit şekilde, form.submit() öğesine tıklamadan önce gönderen işlevine tıklayın.
Ve satın almadan önce.. Özellik belgelenmiştir. MSDN'si:
FORM.gönder()
Gönderim yöntemi, gönderim üzerine olay işleyicisini çağırmaz. Gönderilen olay işleyicisini doğrudan arayın. Microsoft'u kullanırken İnternet Explorer 5.5 ve üzeri sürümlerde, fireEvent yöntemini sEvent parametresindeki onsubmit değeriyle çağırabilirsiniz.
Koristuvach girişe basarsa şimdi kshtalt'a gidin
If (form.onSubmit()) form.submit();
Tekrar çalış.
form.submit(), form.onSubmit() öğesini tıklatırsa özyineleme elde edersiniz.
Bunu düzeltmek için, olayları başlatmanıza izin veren "standart addHandler / addEvent işlevinin" genişletilmiş bir sürümünü kullanmanız gerekir. IE'de bu kesinlikle mümkün ve hiçbir şey olmadan - fireEvent'e bakıyoruz. FF ile benzer veya daha karmaşık bir şey yapmak da mümkündür.
Avlu Roman [dosya], Daha evrensel olarak - bunun gibi:
if (form.onsubmit()!=false) form.submit();
Çünkü, her şeyden önce, JavaScript büyük/küçük harfe duyarlıdır (form.onSubmit yazamazsınız) ve aksi takdirde, sunucuya veri göndermek yalnızca onsubmit () true olarak ayarlandığında değil, aynı zamanda geri dönmediğinde de gerekli değildir. herhangi bir şey (örneğin, obobnik onsubmit varto just alarm'da olduğu gibi ve koristuvach bu obobnik'te herhangi bir eylem gerçekleştirmeden başladı).
On üçler may [dosya], Tabii ki kırmızı ışık, pedal ve bobby ile uyum çok güzel! :) Maalesef bu olayı açıklamıyorum. Çünkü eşit dünyada çok az örnek ve yöntem vardır, ancak bunlardan kaçınılamaz. Beslenmeye olan odağımızı kaybettiğimizden daha net ifade edeyim:
Click() hipergüç yöntemi - tıklamayı çekin onClick toplayıcı gönderdiğimiz şey bu
- formun BE düğmesinin click () yöntemi - düğmenin onClick'inin tıklamasını çekin
- form için reset() yöntemi - formun onReset wiklik'ini takip edin
- Formdaki ALE yöntemi submit() - onSubmit toplayıcının wiklik'ini forma SÜRÜKLEMEYİN!
Bu kadar farklı şekillerde çalışmanın (dil veya tarayıcı geliştiricileri için) ne gibi nedenleri olabilir?
Form gönderme aracını sunucuya yükler veya bu işlemi başlatır. Yöntemin üç çeşidi vardır:
işleyici(eventObject)- örnekleyici kutusuna yüklenecek işlev. Tıkladığınızda aşağıdaki nesne seçilecektir olayObject .
işleyici(eventObject)- div. Daha
olayVerileri- koleksiyona aktarılan ek veriler. Suçlu, şu biçimdeki nesne tarafından temsil edilecektir: (fName1: değer1, fName2: değer2, ...).
Unbind() yöntemini kullanarak ekleme listesini alabilirsiniz.
Diğer yöntemlerin analogları da dahil olmak üzere ikame yönteminin üç çeşidinin tümü (böl. Daha Fazla), dolayısıyla ikame göndermenin () tüm ayrıntıları bu yöntemlerin açıklamalarında bulunabilir.
Gönder düğmesi, form sunucuya gönderilmeden hemen önce istenir ve form gönderimi, eventObject.preventDefault() yöntemi çağrılarak veya yalnızca false değeri döndürülerek formda başlatılabilir.
IE'de yönetici için gönder düğmesi, diğer istemlerle karşılaştırıldığında "hiyerarşiyi birleştirme" gücüne sahip değildir. Ancak jQuery-1.4'ten itibaren bu eksiklik giderildi ve hiyerarşide form öğesinin üzerinde yer alan öğelere kurulu gönderim işleyicilerine, verilerin sunucuya gönderilmeyeceği konusunda bildirimde bulunulacak.
popo
// foo tanımlayıcısına sahip öğe için gönderim alt bölümünü kurun, // bundan sonra sunucuya veri gönderilmesini engelliyoruz$("#Foo").submit(function()(alert( "Form foo sunucuya gönderildi."); yanlış döndür; )); // foo elementinde gönderimi çağır$("#foo").submit(); // gönderim altına başka bir örnekleyici ekleyin, bu sefer öğeler için // blok sınıfıyla. Koleksiyona ek veriler gönderildi$(".Block").submit((a: 12, b: "abc")), function (eventObject) (var externalData = "a =" + eventObject.data .a + ", b =" + eventObject.data .b; uyarı ( "Form foo sunucuya gönderildi."+ "Bu veri aktarımının kitabında:"+ HariciVeriler); ));
Gönder () - form gönderme formunu sunucuya yükler veya bu işlemi başlatır.
Yöntemin üç çeşidi vardır.
Gönder (işleyici)
- olayVerileri- operatöre iletilmek üzere verilerin saklanması amacı. Ücretler şu formatta sunulur (fName1: değer1, fName2: değer2, ...);
- idareci- örnekleyici kutusuna yüklenecek işlev.
Göndermek() |
Gönder düğmesi seçilen sayfa öğelerine tıklar.
İlk iki seçenekte yöntem analog.on ("gönder", işleyici) ve üçüncü seçenekte ise analog.trigger ("gönder") şeklindedir.
Gönder düğmesi, form sunucuya gönderilmeden hemen önce istenir ve form gönderimi, eventObject.preventDefault() yöntemi çağrılarak veya yalnızca false değeri döndürülerek formda başlatılabilir. Gönderme işlevi yalnızca form öğesine bağlanabilir.
Formlar yönlendirilebilir veya bariz bir baskı altında olabilir. , , veya
Örneğin, HTML'ye bakalım:
Kitapçık aşağıdaki forma bağlanabilir:
$("#Hedef"). Submit(function(event)(alert(".submit() için işleyici çağrıldı."); Event.preventDefault();));
$("#Hedef"). gönder(işlev(olay)( uyarı ( ".submit() işleyicisi çağrıldı.") ; etkinlik. PreventDefault(); } ) ; |
Artık form gönderilirse bir bildirim gösterilecektir. Bu koşul gerçek gönderimden önce kontrol edilir, dolayısıyla gönderim konusunda .preventDefault() öğesini çağırarak veya işleyicimizden false değerini çevirerek bunu kontrol edebiliriz. Başka bir öğeye tıklayarak işlemi manuel olarak başlatabiliriz:
$("#Diğer"). Click(function()($("#target").submit();));
$("#Diğer"). tıklayın(işlev()( $("#Hedef"). göndermek(); } ) ; |
Bu kodu girdikten sonra ayrıca bir bildirim görünecek ve form gönderimi başlatıldığında form gönderilecektir.
JavaScript gönderme yöntemi Internet Explorer'a "akmaz". Sunum başlığı altında heyete sunulan proteler, senaryolar sürekli olarak işlenecektir. farklı tarayıcılarda Sayfanın davranışını normalleştiren jQuery 1.4 ile başlayarak.
Dodatkovo
submit() yöntemi .on ("gönder", işleyici) için yalnızca daha kısadır, dolayısıyla ekleme işleyicisini .off ("gönder") kullanarak alabilirsiniz
Formların ve alt öğelerinin, gönderme, uzunluk veya yöntem gibi form kontrollerini eşleştirmek için giriş adlarını veya tanımlayıcıları kullanması zorunlu değildir. İsim çakışmaları sorunlara neden olabilir.
HTML5'in gelişiyle formlar daha evrensel hale geldi. Giriş öğesi artık yanlış yerleştirilebilir e-mail adresleri, Tarihler ve diğer birçok şey, javascript'e gitmeden ve mümkün olan en yüksek değere sahip hiçbir şey yapmadan zorunlu olarak kabul edilebilir. Artık bir form için birden fazla gönder düğmesi kullanmak mümkün ve artık gönder düğmesini formların arasına yerleştirmek de mümkün.
Bir formun ortasında gönderin
Yakın zamana kadar bir forma yalnızca bir gönder düğmesi eklenebiliyordu; aksi halde formda yalnızca geri kalan düğme görüntüleniyordu. "Form" form öğesine method = "post" ve url ekleyerek çalışan bir form oluşturduk.
Artık durum değişti; HTML'ye yeni "formmethod" ve "formaction" yetkileri eklendi. Gönderi yöntemini ve URL'yi doğrudan "gönder" düğmesine ekleyebilirsiniz, böylece forma herhangi bir şey eklemenize gerek kalmaz. Bu parametreler forma değil "gönder" düğmesine eklenir; tüm bunlar forma daha fazla esneklik katar. Artık form için gerektiği kadar düğme oluşturabilirsiniz.
Artık dış görünüm düğmesi "gönder" farklı URL'ler için kullanılabilir ve tüm bunlar, düzen sırasında javascript kodu yazma ihtiyacını ortadan kaldırır. Her şey gayet iyi çalışıyor ve artık düğmeye tıkladıktan sonra form, standart yöntem ve eylem parametrelerinin üzerine yazacak olan formmethod ve formaction'ı seçiyor. Form, yeni parametreler içermeyen birincil bir "gönder" düğmesi içeriyorsa form öğesi için ayarlanan değerler tersine çevrilecektir.
Formmethod ve formaction yetkileri tüm popüler tarayıcılar tarafından desteklenir
Form sınırlarının arkasındaki form öğeleri (giriş, seçim, metin alanı)
Formun tüm elemanlarının elemanın ortasında bulunması gerektiği kabul edilen bir gerçektir.
Günümüzde form özelliği, Internet Explorer (sürüm 10'a kadar) hariç tüm popüler tarayıcılar tarafından desteklenmektedir.