Kalıcı bir pencerede geri bildirim formu. Kalıcı bir pencerede geri bildirim formu için Ajax Komut Dosyasında basit bir iletişim formu

Kalıcı bir pencerede geri bildirim formu. Kalıcı bir pencerede geri bildirim formu için Ajax Komut Dosyasında basit bir iletişim formu

Okuyucularıma selamlar, tecrübe kazandım ve sizlere PHP geri bildirim formunun çalışma prensiplerini anlatacağım. Her şeyin nasıl çalıştığını ve giriş formunun kendisi (giriş alanları) ile PHP'de yazılmış işleyici dosyası arasındaki etkileşimin nasıl oluştuğunu anlamanız için size açık örnekler göstereceğim. Ayrıca kaynakları ücretsiz olarak indirebilirsiniz.

Elbette en azından biraz HTML/CSS bilginiz varsa harika olur çünkü... Kodu benzetme yoluyla sayfanıza sürüklemeniz gerekecektir. PHP diline değinmeyeceğiz; kendiniz için yapmanız gereken tüm değişiklikleri size göstereceğim.

GÜNCELLEME: Okuyuculardan gelen yanıtlara göre daha güzel ve işlevsel bir şeye ihtiyacım olduğunu fark ettim, lütfen benimle tanışın, inceleyin ve bir göz atın. Hangisini en çok beğendiğinizi seçin)

GÜNCELLEME2: UTM etiketlerinin iletimi ile Sürüm 3.0 Uyarlanabilir İniş + ajax formu, okuyun ve görün. Hoşuna gidecek

PHP'de kendi başıma bir geri bildirim formu oluşturmaya ilk çalıştığım zamanı hatırladım ve dürüst olmak gerekirse bu çok emek gerektiriyordu, çünkü... Ne olduğunu ve nasıl olduğunu anlamadım. Sabır ve azim arkadaşlar, başaracaksınız.

PHP geri bildirim formu - yapısı

Geri bildirim formunun analizini bir Açılış Sayfası örneğini kullanarak inceleyeceğiz, bu arada, hakkında ayrı bir makale var. Aşağıdaki düğmeleri kullanarak bunun nasıl çalıştığını görebilirsiniz, bu tek sayfalık sayfanın kaynaklarını ve ana php işleyici dosyasını ekliyorum (bu dosya işlenecek ve e-postayı gönderecektir)

Kaynakları indirip arşivi açtıktan sonra aşağıdaki dosya yapısını göreceksiniz:

  • resim - Açılış Sayfasının kendisi, düğmeler vb. için kullanılan tüm resimler.
  • js - örneğin bir sayfada açılır kalıcı pencere ve diğer görsel efektleri sağlayan javascript komut dosyaları
  • index.html - tek sayfalık sayfamızın indeks dosyası
  • index1.php, formdaki değerlerin aktarıldığı, ardından alınan değişkenlerden bir mektubun üretildiği ve belirtilen e-posta adresine gönderildiği bir işleyici dosyasıdır. Index1.php aynı zamanda otomatik olarak index.html'ye (yani tek sayfalık sayfamıza) geri yönlendirme ile verilerin başarılı bir şekilde gönderilmesi hakkında bir ara bildirim sayfası olarak da görev yapacaktır.

Site dosyalarının bulunduğu hostinginizin PHP işlemeyi desteklemesi önemlidir, aksi halde index1.php dosyası çalıştırılmayacak ve çalışmayacaktır. Bu nüansı açıklığa kavuşturmak için, hostinginizin kayıtlı olduğu kampanyayla iletişime geçin veya sadece test edin - çalışıyor, destek olduğu anlamına geliyor. Değilse, php dil ​​desteği seçeneğini etkinleştirin

Tüm öğelerin nasıl etkileşime girdiğini gösteren şemaya bir göz atın (sayfa, form, işleyici)

Formu ve işleyiciyi çağırmak için kaynak kodu

Geri bildirim formunu içeren kalıcı bir açılır pencere açan düğmelerden birinin nasıl çalıştığına bir göz atalım. Verilen bu kaynak kodu, sayfaya bir veya iki defadan fazla ekleyebileceğiniz bir şeydir ve işe yarayacaktır. Tasarımınıza ve ihtiyaçlarınıza uyacak şekilde bunu kendiniz özelleştirmeniz gerekecektir.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Geri arama isteğinde bulun Geri arama isteğinde bulunun

Geri arama isteğinde bulun Geri arama isteğinde bulunun

Aşağıda index1.php işleyicisinin kaynak kodunun tamamı verilmiştir; posta kutunuza gönderimi ayarlamak için " [e-posta korumalı]"kendi başınıza, geri kalanı prensip olarak değişmeden bırakılabilir

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 Sizinle iletişime geçilecek

Sizinle iletişime geçilecektir body ( arka plan: #22BFF7 url(img/zakaz.jpg) üst -%70 merkez tekrarsız; ) setTimeout("location.replace("/index.html")", 3000); /*Geçerli sayfa adresini 3 saniye (3000 milisaniye) sonra değiştir*/

Formun işlevselliğini kontrol etme

Formumuzu test etmek için pencereyi açın ve verileri girin

Barındırma sisteminizin PHP dosyalarının işlenmesini desteklemesi gerektiğini bir kez daha hatırlatmama izin verin, aksi takdirde işleyicimiz yürütülmeyecek ve belirtilen e-posta adresine hiçbir mektup gönderilmeyecektir. Başarıyla doldurulmuş bir geri bildirim formunun sonucu


Benim için bu kadar, senaryonun anlamını ve işleyişini en iyi şekilde aktarmaya çalıştım. Herhangi bir sorunuz varsa yorumlardan veya VK'dan benimle iletişime geçmekten çekinmeyin (iletişim bilgilerine bakın). Kolay ve verimli çalışmalar dilerim.

Hepimiz, kullanıcılardan gelen geri bildirimler için iletişim bilgilerini ayrı, özel olarak oluşturulmuş sayfalarda görmeye alışkınız. Kural olarak, bu tür sayfalarda iletişim formlarına ek olarak etkileşim ve iletişim için birçok başka bilgi de yayınlanır. Mekanizma köklüdür, yıllar boyunca test edilmiştir ve mükemmel çalışmaktadır. Ancak bazı durumlarda kullanıcıları başka sayfalara yönlendirmeden, ayrı bir iletişim formunun açılır pencere olarak görüntülenmesine ihtiyaç duyulur.
Bir zamanlar jQuery tarafından desteklenen bir şeye baktık. Bugün size, site için ayrı, orijinal olarak tasarlanmış, açılır bir iletişim formu oluşturmaya yönelik ilginç bir çözümü tanıtmak istiyorum.

Bana göre kullanıcı etkileşimi araçlarına harika bir örnek.

Örneğe baktık. Şimdi bu formu, Html'de genel yapıyı oluşturmaktan CSS kullanarak mizanpajın görünümünü oluşturmaya kadar bileşenlerine ayıralım.

Formun HTML kodu

Süslü değil, normal bir iletişim formunun mümkün olan en basit çerçevesi, belirli bir tanımlayıcı ve sınıfa sahip bir blok div öğesine yerleştirilmiş, formun css'deki görünümünü daha da şekillendirmek ve etkinleştirmemiz gereken küçük bir javascript ile etkileşime girmek ve açılır formu kapatın.

Kapalı Bize mesaj gönder

Kapalı Bize mesaj gönderin Lütfen mesajınızı buraya girin..

Ayrıca açılır formu aktif hale getirirken genel arka plan için karartma katmanı oluşturmamız gerekiyor. Bu görev farklı şekillerde gerçekleştirilebilir, ancak çok akıllı olmayacağız ve ona bir tanımlayıcı atayarak başka bir div ekleyeceğiz: id='fade' ve bir class: class='black-overlay'. Gerektiğinde uzun süre aramanıza gerek kalmaması için formun yanına yerleştirebilirsiniz.

Geri bildirim

Muhtemelen kapat düğmesinin iletişim formu bloğunda başlıktan hemen önce yazıldığını fark etmişsinizdir ve bu mantıklıdır, ancak başka nerede olması gerekiyorsa, düğmenin formla birlikte görünüp kaybolması gerekir. Daha sonra CSS'de kapat düğmesinin görünümünü ve konumunu oluşturacağız

Hepsi bu kadar, şimdi açılır geri bildirim formunu içeren sayfanın tam HTML koduna bakalım:

Açılır iletişim formu Kapalı Bize mesaj gönderin Lütfen mesajınızı buraya girin..

Açılır iletişim formu Kapalı Bize bir mesaj gönderin Lütfen mesajınızı buraya girin..

İletişim formumuzu CSS kullanarak şekillendirmenin eğlenceli kısmına geçmeden önce biraz geriye gideceğim. En dikkatli kişiler muhtemelen formu açma ve kapatma düğmelerinin "jammer" href="javascript:void(0)" içeren bağlantılar şeklinde uygulandığını fark etmişlerdir. Bu iyi mi kötü mü, kendime hiçbir zaman kesin bir cevap bulamadım; alışkanlıktan dolayı bu yöntemi kullanıyorum. Her ne kadar script tarafından onclick olayının işlendiği elementler için , veya kullanımının daha mantıklı ve doğru olduğunu düşünüyorum. İsterseniz bu örnekteki düğmelerle bunu her zaman yapabilirsiniz.

CSS'nin büyüsü

Bu geri bildirim formu, bazı tasarım değişiklikleriyle orijinal tarzda yapılmıştır, bu nedenle yalnızca modern CSS3 standartlarını kullanan düzen seçeneği oldukça sorunludur.
Tüm tasarımın temeli, iletişim formunun arka planı, kullanıcıyı önünde neyin açıldığı konusunda herhangi bir şüphe bırakmayacak basit bir zarf çizimi olacaktır)))) Kapatma düğmesinde, ayrıca üzerine gelindiğinde değişmesi için birkaç küçük resim kullanın. Tüm bu resimleri ve genel olarak düğmeleri kolayca kendinize göre değiştirebilirsiniz, eğer cesaretiniz varsa CSS3 ile oynayabilirsiniz.

Ve işte, netlik sağlamak ve gereksiz sorulardan kaçınmak için birkaç yorumla birlikte harika formumuza ait CSS kodunun kendisi:

/* arka plan koyulaştırma katmanını ayarlayın, ** koyulaştırmanın konumlarını, rengini ve yoğunluğunu tanımlayın */ .black-overlay( display : none ; konum : mutlak ; üst : %0 ; sol : %0 ; genişlik : %100 ; yükseklik: %100; arka plan rengi: siyah; z-endeksi: 1001; -moz-opaklık: .70; filtre: alfa(opaklık= 70); yükseklik : 340px ; arka plan : url (images/envelope.png ) merkez tekrarsız ; z-index : 1002 ; konum : göreceli ; kenar boşluğu : %10 otomatik ) /* kapat düğmesini oluşturur, ** boyutlar, konum; form */ .close-btn ( genişlik : 31 piksel ; yükseklik : 31 piksel ; görüntü : blok ; imleç : işaretçi ; /* dışındaki durumlar için etiketler */ arka plan : url (images/close.png ) ; metin girintisi: -4999px; ) /* fareyle üzerine gelindiğinde kapat düğmesi */ .close-btn : vurgulu ( arka plan : url (images/close-hover.png ) ; ) /* form başlığını tasarlayın */ .title ( font-family : "Trebuchet MS", Tahoma, Arial, sans-serif; yazı tipi ağırlığı: normal; metin hizalama: sol; konum: mutlak üst: 40 piksel; ** veya kenarlık-alt: falan falan */ arka plan: url (images/divider.png) hayır -tekrarlama alt; yükseklik: 40px; kenar boşluğu: 15px 0; 1px #FFF ; /* metin gölgesi */ ) /* giriş alanları için stiller */ input[ type= text ] ( font-family : "Trebuchet MS", Tahoma, Arial, sans-serif ; yazı tipi boyutu: 13 piksel; arka plan rengi: rgb (255, 255, 255); renk: #787474; kenarlık rengi: rgb (182, 182, 182); : katı; -moz-kutusu-gölge: 0px 1px 0px 0px rgba (255, 255, 255, 0.5), iç metin 0px 1px 2px 0px rgba (0, 0, 0, 0.2); -webkit-box-shadow: 0px 1px 0px 0px rgba (255, 255, 255, 0,5), ek 0px 1px 2px 0px rgba (0, 0, 0, 0,2); kutu gölgesi: 0px 1px 0px 0px rgba (255, 255, 255, 0,5), iç metin 0px 1px 2px 0px rgba (0, 0, 0, 0,2); -ms-filtresi: ; filter : progid: DXImageTransform.Microsoft .dropshadow(OffX = 0 , OffY = 1 , Color = #80ffffff , Pozitif = true) ; kenarlık yarıçapı: 3px; -moz-sınır-yarıçapı: 3px; ) /* odaklanıldığında giriş alanlarının tasarımını değiştirin */ input[ type= text ] : focus , .your-message : focus ( Outline : yok ; arka plan rengi : rgb (255 , 255 , 255 ) ; border-color : rgb ( 126, 139, 153); kenarlık: 1px katı; -moz-box-shadow: 0px 0px 5px 0px rgba (168, 178, 188, 0,75), 0px 1px 0px rgba (255, 255, 255, 0,5) 0px 1px 2px 0px rgba (0, 0, 0, 0.4); -webkit-box-shadow: 0px 0px 5px 0px rgba (168, 178, 188, 0.75) ), ek 0px 1px 2px 0px rgba (0, 0, 0) , 0,4) ; kutu gölgesi: 0px 0px 5px 0px rgba (168, 178, 188, 0,75) , 0px 1px 0px 0px rgba (255, 255, 255, 0,5) , iç metin 0px 1px 2px 0px rgba ( 0 , 0 , 0 , 0.4 ) ; -ms-filtre: "progid:DXImageTransform.Microsoft. Glow(Color=#bfa8b2bc,Strength=5) progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Positive = true)" ; filter : progid: DXImageTransform.Microsoft .Glow(Color= #bfa8b2bc , Güç= 5 ) progid: DXImageTransform.Microsoft .dropshadow(OffX = 0 , OffY = 1 , Color = #80ffffff , Pozitif = doğru)) ) .mesajınız ( font-family : "Trebuchet MS" , Tahoma, Arial , sans-serif; arka plan rengi: rgb (255, 255, 255); renk: 10 piksel 0 0 10 piksel; (182, 182, 182) ; kenarlık stili: katı -moz-kutu; gölge: 0px 1px 0px 0px rgba (255, 255, 255, 0,5) , iç metin 0px 1px 2px 0px rgba (0, 0, 0, 0,2) ; -webkit-box-shadow: 0px 1px 0px 0px rgba (255, 255, 255 , 0,5 ), ek 0px 1px 2px 0px rgba (0 , 0 , 0 , 0,2 ) ; 0px 1px 0px 0px rgba (255, 255, 255, 0,5), ek 0px 1px 2px 0px rgba (0, 0, 0, 0,2) ); -ms-filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Pozitif = true)" ; filter : progid: DXImageTransform.Microsoft .dropshadow(OffX = 0 , OffY = 1 , Color = #80ffffff , Pozitif = true) ; konum: mutlak; üst: 150 piksel; sol: 40 piksel; kenarlık yarıçapı: 3px; -moz-sınır-yarıçapı: 3px; ) .your-name ( konum : mutlak ; üst : 100 piksel ; sol : 40 piksel ; ) .email-address ( konum : mutlak ; üst : 100 piksel ; sol : 280 piksel ; ) /* gönder butonunu tasarlayın */ .send-message ( arka plan rengi : #929FAB ; arka plan görüntüsü : -moz-linear-gradient(49% 0% -90deg, rgb (171, 181, 191) 0%, rgb (124, 138, 152) 100%) : - webkit-gradient(doğrusal, %49 %0, %49 %109, color-stop(0, rgb (171, 181, 191) ) , color-stop(1, rgb (124, 138, 152) ) ) ; -image: -webkit-linear-gradient(-90deg, rgb (171, 181, 191) %0, rgb (124, 138, 152) %100) 90deg, rgb (171, 181, 191) %0, rgb (124, 138, 152) %100); arka plan görüntüsü: -ms-linear-gradient(-90deg, rgb (171, 181, 191) %0, rgb (124, 138, 152) %100); resim: doğrusal degrade (-90 derece, rgb (171, 181, 191) %0, rgb (124, 138, 152) %100); genişlik: 130 piksel yükseklik: 35 piksel; -moz-box-shadow: 0px 1px 0px 0px rgba (255, 255, 255, 0,5), ek 0px 1px 3px rgb (97, 108, 122); -webkit-box-shadow: 0px 1px 0px 0px rgba (255, 255, 255, 0. 5), ek 0 piksel 1 piksel 3 piksel rgb (97, 108, 122); kutu gölgesi: 0px 1px 0px 0px rgba (255, 255, 255, 0,5), iç metin 0px 1px 3px rgb (97, 108, 122); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffabb5bf,endColorstr=#ff7c8a98,GradientType=0) progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Positive = doğru)"; filter : progid: DXImageTransform.Microsoft .gradient(startColorstr= #ffabb5bf , endColorstr= #ff7c8a98 , GradientType= 0 ) progid: DXImageTransform.Microsoft .dropshadow(OffX = 0 , OffY = 1 , Color = #80ffffff , Positive = true) ; renk: #fff; yazı tipi ailesi: "Trebuchet MS", Tahoma, Arial, sans-serif; yazı tipi boyutu: 13 piksel; metin gölgesi : 0 1px 0 #21405D ; yazı tipi ağırlığı: kalın; sınır: yok; imleç: işaretçi; kenarlık yarıçapı: 3px; -moz-sınır-yarıçapı: 3px; konum: mutlak; üst: 269 piksel; sağ: 100 piksel; ) /* gönder düğmesini fareyle üzerine gelindiğinde stillendirin */ .send-message : fareyle üzerine gelin ( arka plan rengi : #A0ACB9 ; arka plan resmi : -moz-linear-gradient(49% 0% -90deg , rgb (170 , 181 , 195) ) %0 , rgb (144 , 157 , 169 ) %100 ) ; arka plan görüntüsü : -webkit-gradient(doğrusal, %49 %0 , %49 %109 , color-stop(0 , rgb (170 , 181 , 195) ) ) ), color-stop(1 , rgb (144 , 157 , 169 ) ); arka plan görüntüsü : -webkit-linear-gradient(-90deg , rgb (170 , 181 , 195 ) 0% , rgb (144 , 157 , 169 ) 100% ) ; arka plan görüntüsü : -o-linear-gradient(-90deg , rgb (170 , 181 , 195 ) 0% , rgb (144 , 157 , 169 ) 100% ) ; RGB (170, 181, 195) %0, RGB (144, 157, 169) %100); arka plan görüntüsü: doğrusal degrade (-90 derece, RGB (170, 181, 195) %0, RGB (144, 157) , 169) %100); genişlik: 130 piksel; yükseklik: 35 piksel; -moz-box-shadow: 0px 1px 0px rgba (255, 255, 255, 0,5) 97, 108, 122); 0px 1px 0px 0px rgba (255, 255, 255, 0,5), ek 0px 1px 3px rgb (97, 108, 122); kutu gölgesi: 0px 1px 0px 0px rgba (255, 255, 255, 0,5), iç metin 0px 1px 3px rgb (97, 108, 122); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffaab5c3,endColorstr=#ff909da9,GradientType=0) progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Positive = doğru)"; filtre : progid: DXImageTransform.Microsoft .gradient(startColorstr= #ffaab5c3 , endColorstr= #ff909da9 , GradientType= 0 ) progid: DXImageTransform. Microsoft .dropshadow(OffX = 0 , OffY = 1 , Color = #80ffffff , Pozitif = true) ; ) /* gönder düğmesini aktif modda dekore edin */ .send-message : active ( arka plan resmi : -moz-linear-gradient(49% 0% -90deg , rgb (142 , 154 , 167 ) 0% , rgb ( 124 , 138 , 152 ) 100% ) ; arka plan görüntüsü : -webkit-gradient(doğrusal, 49% 0% , 49% 109% , color-stop(0 , rgb (142 , 154 , 167 )) ), color-stop ( 1, rgb (124, 138, 152) ); arka plan görüntüsü: -webkit-linear-gradient(-90deg, rgb (142, 154, 167) %0, rgb (124, 138, 152) %100); arka plan görüntüsü: -o-linear-gradient(-90deg, rgb (142, 154, 167) %0, rgb (124, 138, 152) %100) arka plan görüntüsü: -ms-linear-gradient(-90deg) , rgb (142 , 154 , 167 ) %0 , rgb (124 , 138 , 152 ) %100 ) ; arka plan görüntüsü : doğrusal degrade (-90 derece , rgb (142 , 154 , 167 ) %0 , rgb (124 , 138 , 152 ) 100% ); genişlik : 130 piksel ; yükseklik : 35 piksel ; -moz-box-shadow: 0px 1px 0px 0px rgba (255 , 255 , 255 , 0,5 ), iç kısım 0px 1px 5px rgb (65 , 73 , 85 ) ; -webkit-box-shadow: 0px 1px 0px 0px rgba (255, 255, 255, 0,5), iç metin 0px 1px 5px rgb (65, 73, 85); kutu gölgesi: 0px 1px 0px 0px rgba (255, 255, 255, 0,5), iç metin 0px 1px 5px rgb (65, 73, 85); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff8e9aa7,endColorstr=#ff7c8a98,GradientType=0) progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Positive = doğru)"; filter : progid: DXImageTransform.Microsoft .gradient(startColorstr= #ff8e9aa7 , endColorstr= #ff7c8a98 , GradientType= 0 ) progid: DXImageTransform.Microsoft .dropshadow(OffX = 0 , OffY = 1 , Color = #80ffffff , Positive = true) ; )

/* arka plan karartma katmanını ayarlayın, ** koyulaştırmanın konumunu, rengini ve yoğunluğunu tanımlayın */ .black-overlay( display: none; konum: mutlak; üst: %0; sol: %0; genişlik: %100; yükseklik: %100; arka plan rengi: siyah; z-endeksi: 1001; -moz-opaklık: .70; filtre: alfa(opaklık=70); yükseklik: 340 piksel; arka plan: url(images/envelope.png) tekrarsız merkez; z-index:1002; konum: göreceli; kenar boşluğu: %10 otomatik ) /* boyutlar, konum form */ .close-btn ( genişlik: 31px; yükseklik: 31px; görüntüleme: blok; imleç: işaretçi;/* dışında bir kullanım durumu için etiketler */ arka plan: url(images/close.png); metin girintisi: -4999px; ) /* fareyle üzerine gelindiğinde kapat düğmesi */ .close-btn:hover( arka plan: url(images/close-hover.png); ) /* form başlığını tasarlayın */ .title ( font-family: "Trebuchet MS", Tahoma ,Arial,sans-size:22px;font-weight:200;position:absolute:left:40px; ** veya border-bottom: filan filan */ arka plan: url(images/divider.png) tekrarlanmayan alt ; yükseklik: 40px; kenar boşluğu: 15px 0; 1px #FFF;/* metin gölgesi */ ) /* giriş alanları için stiller */ input ( font-family: "Trebuchet MS",Tahoma,Arial,sans-serif; font- boyut: 13 piksel; arka plan rengi: rgb (255,255,255); renk: #787474; kenar rengi: rgb (182,182,182); katı 0 piksel 1 piksel 0 piksel rgba (255,255,255,0,5), ek 0 piksel 2px 0px rgba(0,0,0,0.2); -webkit-box-shadow:0px 1px 0px 0px rgba(255,255,255,0.5), iç metin 0px 1px 2px 0px rgba(0,0,0,0.2); kutu gölgesi:0px 1px 0px 0px rgba(255,255,255,0.5), iç metin 0px 1px 2px 0px rgba(0,0,0,0.2); -ms-filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Pozitif = doğru)"; filter:progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Pozitif = true); kenarlık yarıçapı: 3px; -moz-sınır-yarıçapı: 3px; ) /* odaklanıldığında giriş alanlarının tasarımını değiştirin */ input:focus, .your-message:focus ( taslak: yok; arka plan rengi:rgb(255,255,255); border-color:rgb(126,139,153); border: 1px katı ; - moz-box-shadow:0px 0px 5px 0px rgba(168,178,188,0.75) ,0px 1px 0px 0px rgba(255,255,255,0.5), iç metin 0px 1px 2px 0px rgba(0,0,0,0.4); 0px rgba(168,178,188,0.75) ,0px 1px 0px 0px rgba(255,255,255,0.5), iç metin 0px 1px 2px 0px rgba(0,0,0,0.4); kutu gölgesi:0px 5px 0px rgba(168,178); ,0.75) ,0px 1px 0px 0px rgba(255,255,255,0.5) ,inset 0px 1px 2px 0px rgba(0,0,0,0.4); -ms-filter:"progid:DXImageTransform.Microsoft.Glow(Color=#bfa8b2bc, Güç=5) progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Positive = true)"; filter:progid:DXImageTransform.Microsoft.Glow(Color=#bfa8b2bc,Strength=5) progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Positive = true); .your-message (font-family: "Trebuchet MS",Tahoma,Arial,sans-serif; yazı tipi boyutu: 13 piksel; arka plan rengi:rgb(255,255,255); renk: #787474; dolgu: 10 piksel 0 0 10 piksel; genişlik:448 piksel; yükseklik:93 piksel; kenarlık rengi:rgb(182,182,182); kenarlık genişliği:1 piksel; kenarlık stili:katı; -moz-box-shadow:0px 1px 0px 0px rgba(255,255,255,0. 5) ,iç metin 0px 1px 2px 0px rgba(0,0,0,0.2); -webkit-box-shadow:0px 1px 0px 0px rgba(255,255,255,0.5), iç metin 0px 1px 2px 0px rgba(0,0,0,0.2); kutu gölgesi:0px 1px 0px 0px rgba(255,255,255,0.5), iç metin 0px 1px 2px 0px rgba(0,0,0,0.2); -ms-filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Pozitif = doğru)"; filter:progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Pozitif = true); konum: mutlak; üst: 150 piksel; sol: 40 piksel; kenarlık yarıçapı: 3px; -moz-sınır-yarıçapı: 3px; ) .your-name ( konum: mutlak; üst: 100 piksel; sol: 40 piksel; ) .email-address ( konum: mutlak; üst: 100 piksel; sol: 280 piksel; ) /* gönder düğmesini tasarlayın */ .send-message ( arka plan -renk: #929FAB; arka plan görüntüsü: -moz-linear-gradient(49% 0% -90deg,rgb(171,181,191) 0%,rgb(124,138,152) 100%); color-stop(0, rgb(171,181,191)), color-stop(1, rgb(124,138,152))); arka plan görüntüsü:-webkit-linear-gradient(-90deg,rgb (171,181,191) 0%,rgb(124,138,152) %100); arka plan görüntüsü:-o-doğrusal-gradyan(-90 derece,rgb(171,181,191) %0,rgb(124,138,152) %100); doğrusal-gradyan(-90 derece,rgb(171,181,191) %0,rgb(124,138,152) ) %100); arka plan görüntüsü:doğrusal-gradyan(-90 derece,rgb(171,181,191) %0,rgb(124,138,152) %100); 130px; -moz-box-shadow:0px 0px 0px rgba( 255,255,255,0,5), ek 0px 1px 3px rgb(97,108,122); -webkit-box-shadow:0px 1px 0px rgba(255,255,255,0,5), ek 0px 1px 3px rgb(97,108,122); kutu-gölge:0px 1px 0px 0px RGBA (255,255,255,0,5), ek 0px 1px 3px rgb(97,108,122); -ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffabb5bf,endColorstr=#ff7c8a98,GradientType=0) progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Positive = doğru)"; filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffabb5bf,endColorstr=#ff7c8a98,GradientType=0) progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Positive = true); renk: #fff; yazı tipi ailesi: "Trebuchet MS",Tahoma,Arial,sans-serif; yazı tipi boyutu: 13 piksel; metin gölgesi: 0 1px 0 #21405D; yazı tipi ağırlığı: kalın; sınır: yok; imleç: işaretçi; kenarlık yarıçapı: 3px; -moz-sınır-yarıçapı: 3px; konum: mutlak; üst: 269 piksel; sağ: 100 piksel; ) /* fareyle üzerine gelindiğinde gönder düğmesini süsleyin */ .send-message:hover( arka plan rengi: #A0ACB9; arka plan resmi:-moz-linear-gradient(49% 0% -90deg,rgb(170,181,195) 0%, rgb (144,157,169) %100); arka plan görüntüsü: -webkit-gradient(doğrusal,49% 0%,49% 109%,color-stop(0, rgb(170,181,195)),color-stop(1, rgb(144,157,169) ) )); arka plan görüntüsü:-webkit-doğrusal-gradyan(-90 derece,rgb(170,181,195) 0%,rgb(144,157,169) 100%); arka plan-görüntü:-o-doğrusal-gradyan(-90 derece,rgb(170,181,195) ) %0,rgb(144,157,169) %100); arka plan görüntüsü:-ms-doğrusal-gradyan(-90 derece,rgb(170,181,195) %0,rgb(144,157,169) %100); (144,157,169) %100); genişlik:130px; -moz-box-shadow:0px 1px 0px rgba(255,255,255,0. 5) ,ek 0px 1px 3px rgb(97,108,122); -webkit-box-shadow:0px 1px 0px 0px rgba(255,255,255,0.5), iç metin 0px 1px 3px rgb(97,108,122); kutu gölgesi:0px 1px 0px 0px rgba(255,255,255,0.5), iç metin 0px 1px 3px rgb(97,108,122); -ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffaab5c3,endColorstr=#ff909da9,GradientType=0) progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Positive = doğru)"; filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffaab5c3,endColorstr=#ff909da9,GradientType=0) progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Positive = true); ) /* gönder düğmesini aktif modda tasarlayın */ .send-message:active( arka plan resmi:-moz-linear-gradient(49% 0% -90deg,rgb(142,154,167) 0%,rgb(124,138,152) 100% ) ; arka plan resmi: -webkit-gradient(doğrusal,49% 0%,49% 109%,color-stop(0, rgb(142,154,167)), color-stop(1, rgb(124,138,152))); webkit-linear-gradient(-90deg,rgb(142,154,167) 0%,rgb(124,138,152) 100%); %100); arka plan görüntüsü:-ms-doğrusal-gradyan(-90 derece,rgb(142,154,167) %0,rgb(124,138,152) %100); arka plan görüntüsü:doğrusal-gradyan(-90 derece,rgb(142,154,167) %0 ,rgb(124,138,152) 100%); genişlik:130px; yükseklik:35px; -moz-box-shadow:0px 1px 0px rgba(255,255,255,0,5), iç metin 0px 5px rgb(65,73,85); kutu-gölge:0px 1px 0px 0px rgba(255,255,255,0.5), iç metin 0px 1px 5px rgb(65,73,85); ,73,85); -ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff8e9aa7,endColorstr=#ff7c8a98,GradientType=0) progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1, Renk = #80ffffff,Pozitif = doğru)"; filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff8e9aa7,endColorstr=#ff7c8a98,GradientType=0) progid:DXImageTransform.Microsoft.dropshadow(OffX = 0,OffY = 1,Color = #80ffffff,Positive = true); )

Kodun oldukça hacimli olduğu ortaya çıktı, ancak ne yapabilirsiniz, CSS3 standardının yeni özelliklerini ve işlevlerini denemenin ve uygulamaya koymanın elbette izin verildiği ve haklı olduğu yerde kendimi zevkten inkar edemem. Bu sayede ilginç ve taze yerleşim çözümleri ortaya çıkıyor. Hatalar ve şüpheler olmadan değil ama bu gerçek bir hareket ve aynı zamanda faydalı bir uygulamadır.

Tüm! Sizinle birlikte, kullanıcılarla etkileşim kurmak için mükemmel bir araç, site için açılır bir iletişim formu oluşturduk. Tek yapmanız gereken canlı örneğe bakmak, isterseniz kaynakları indirmek ve PHP işleyicinizi forma eklemek.

Kaynakların bulunduğu arşivde ihtiyacınız olan her şeyi ve formun arka plan resimleri için birkaç seçeneği daha bulacaksınız.

21.05.2017 tarihinden itibaren güncelleme
Form için en basit PHP işleyicisini ve yapılandırma için bir yapılandırma dosyasını bulacağınız “mail” klasörünü kaynak arşive ekledim. İşleyici bu forma bağlıdır; küçük bir talimat ve doğrudan işleyici dosyalarının koduna yazılan yorumlar, umarım neyin, nerede ve neden olduğunu anlamanıza yardımcı olur.

Saygılarımla, Andrew

Sitede bir kez ve belirli bir zaman aralığında gösterilen bir açılır pencereyi nasıl oluşturabileceğinize adadım. Yani bir seçenek olarak bu pencereye bir form ekleyebilirsiniz. Bu bir abonelik formu veya iletişim formu veya genel olarak herhangi bir şey olabilir. Verilerin sayfayı yeniden yüklemeden gönderilmesi için Ajax formlarını açılır pencerelerde görüntülemek daha iyidir.

Makale yapısı

Joomla veya WordPress gibi bir motorda bir web sitesi oluşturuyorsanız, elbette tasarımcılar da dahil olmak üzere formlar için çeşitli hazır çözümleri kullanabilirsiniz. Peki ya yalnızca saf HTML ile tasarım yapıyorsanız ve müşteri formların çalışabilmesi için "canlandırılmasını" isterse? Bu formun kullanışlı olduğu yer burasıdır.

GÜNCELLEME. 08/02/2018
Formun GitHub'da yayınlandığı dikkate alınarak makale yeniden yazılmıştır.

Öyleyse başlayalım. Öncelikle form kaynaklarını GitHub depomdan indirin.

Bu montajı Gulp görev yöneticisini kullanarak topladım. Onunla nasıl çalışılacağını yazdım, okuduğunuzdan emin olun.

Formu siteye bağlama

Arşivi formla birlikte açın. Daha sonra, dist klasöründeki tüm içeriği site şablonunuzdaki formlar klasörüne (örneğin, ajax-form) kopyalayın. Daha sonra kaynakları (stilleri ve komut dosyalarını) birbirine bağlarız. Css ve js klasörlerinde sıkıştırılmış ve normal olmak üzere iki sürüm vardır. Gelecekte kodda değişiklik yapmayı planlıyorsanız sıkıştırılmamış sürümleri bağlamak daha iyidir.

Sitenizde jQuery kitaplığı zaten etkinse onu bağlamanıza gerek yoktur. Dikkat et .

Formun başlatılması

Alan doğrulamanın HTML5 kullanılarak düzenlendiğini hemen belirteyim.

Form .simpleSendForm() yöntemiyle çağrılır, örneğin:

$("#idForm").simpleSendForm();

#idForm yerine form tanımlayıcısını belirtiyoruz. Genel olarak form başlatma kodunu scripts.js dosyasında bulabilirsiniz. Eklenti çağırma kodu oradan kesilebilir ve . jQuery.(document).ready() öğesini unutmayın.

Form bazı seçenekleri kabul edebilir.

Seçenekler
  • SuccessTitle (string) — Form gönderildiğinde gönderilen teşekkür mesajının başlığı. Varsayılan ayar "Bizi seçtiğiniz için teşekkür ederiz!"
  • SuccessText (string) - Teşekkür mesajının başlığının altındaki metin. Varsayılan ayar "Sizinle kısa sürede iletişime geçeceğiz." şeklindedir.
  • errorTitle (string) — form gönderme hata mesajının başlığı. Varsayılan "Mesaj gönderilmedi!" şeklindedir.
  • errorSubmit (string) — form gönderme hata mesajının metni. Varsayılan "Form gönderilirken hata oluştu!" şeklindedir.
  • errorNocaptcha (string) — captcha doldurulmamışsa hata metni.
  • errorCaptcha (string) — kontrol başarısız olursa hata metni.
  • mailUrl (string) — işleyici dosyasının yolu. Varsayılan "../form-submit/submit.php" şeklindedir. Eğer “form-submit” klasörünüz sitenin kök dizininde değilse tam yolunu değiştirip belirtmelisiniz.
  • autoClose (boolean) - Başarılı form gönderiminden sonra pencereyi otomatik olarak kapatır (kalıcı penceredeki formlar için). Form penceresi kapanır ve 5 saniye sonra bir teşekkür mesajı görüntülenir. Bu sefer geçersiz kılınabilir.
  • autoCloseDelay (sayı) - teşekkür mesajının görüntülenme süresi (milisaniye cinsinden), ardından kapanacaktır. Varsayılan 5000'dir (5 saniye).
  • hata ayıklama (boolean) - varsayılan olarak false. Formda sorun varsa hata ayıklamayı etkinleştirin. Konsoldaki hata mesajlarına bakın.
  • captcha (boolean) - varsayılan olarak false. Recaptcha 2.0'ı etkinleştirin veya devre dışı bırakın.
  • captchaPublicKey (string) — recaptcha genel anahtarı.
Kalıcı pencerede form

Formumuz kalıcı bir pencerede de gösterilebilir. Modal kütüphane tarafından görüntülenecektir.

HTML Kodu

Düğme kodu

Arama isteğinde bulunun

Form kodu

Kalıcı pencereyi ve formu başlatın. Pencerenin 3 saniye sonra otomatik olarak kapanmasını sağlayalım. Formun başarıyla gönderilmesinden sonra. Magnific Popup çağrı kodunu scripts.js dosyasında da bulabilirsiniz.

Kalıcı pencereli bir form çağırma // ======= Magnific Popup'ı Başlat ======= $(".modal-popup").magnificPopup(( type: "inline", sabitContentPos: false, sabitBgPos : true , overflowY: "auto", closeBtnInside: true, preloader: false, midClick: true, RemovalDelay: 300, mainClass: "mfp-top-up" )); // ===== Modal formu başlat ==== $("#idForm").simpleSendForm (( SuccessTitle: "Başvurunuz kabul edildi!", SuccessText: "Çalışanımız sizinle en kısa sürede iletişime geçecektir." , autoClose : true, autoCloseDelay: 3000 )); Recaptcha nasıl etkinleştirilir?

Bir formda recaptcha'yı etkinleştirmek istiyorsanız, formun html kodunda, görüntülemek istediğiniz yere recaptcha sınıfının bulunduğu boş bir blok eklemeniz gerekir. Daha sonra form eklentisini çağırma kodunda true değerine sahip captcha seçeneğini aktarıyoruz ve recaptcha genel anahtarınızı captchaPublicKey seçeneğine aktarıyoruz. Genel ve özel anahtarları alabilirsiniz.

// ===== Captcha'yı formda başlatın ==== $("#idForm").simpleSendForm(( SuccessTitle: "Başvurunuz kabul edildi!", SuccessText: "Çalışanımız sizinle en kısa sürede iletişime geçecektir) ." , autoClose: true, autoCloseDelay: 3000, captcha: true, captchaPublicKey: "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI" ));

Daha sonra form-submit dizininden form işleyicisi submit.php dosyasını açın. recaptchaOn değişkenini arıyoruz (7. satır civarında) ve onu true olarak ayarlıyoruz. Daha sonra $secret değişkenini arayın (yaklaşık 89. satır) ve özel anahtarı kendi anahtarınızla değiştirin.

Temelde her şey. Bu manipülasyonlardan sonra bir captcha görmelisiniz.

Lütfen demo sitesinde, Google'ın test anahtarları belirtildiği için captcha'nın test modunda çalıştığını unutmayın.

Şimdi form işleyici dosyasına (submit.php) bakalım ve ana kod parçalarını inceleyelim. İşleyici PHP'de çalışır, bu nedenle formu test etmek istiyorsanız .

Olası hatalar Formdaki mesaj gönderilmez, ön yükleyici sadece çalışır ve hepsi bu. Sorun nedir?

İşleyici dosyasının yolunun form başlatma işleminde doğru şekilde belirtilip belirtilmediğine bakın:

mailUrl: — işleyici dosyasının yolu

Ayrıca recaptcha'nın doğru şekilde etkinleştirildiğini de kontrol edin. Yani devre dışı bırakılırsa, başlatma kodundaki recaptcha seçenekleri ve işleyici dosyasındaki $recptchaOn, recaptcha etkinse false veya true olarak ayarlanmalıdır.

Google Recaptcha formda görünmüyor

Recaptcha (recaptcha çağrısı) ve $recaptchaOn (işleyici dosyası) değerlerinin iletilip iletilmediğini kontrol edin - doğru. Ayrıca anahtarları doğru şekilde belirleyip belirlemediğinizi de kontrol edin (genel ve özel).

Her şeyi talimatlara göre yaptım ama form çalışmıyor, hatayı nerede arayabilirim?

Öncelikle tarayıcı konsoluna bakıp hataları kontrol etmenizi öneririm. Ayrıca jQuery kütüphanesinin etkin olup olmadığını kontrol edin. scripts.js dosyasının doğru şekilde eklendiğini kontrol edin. Her şey yolundaysa, debug: true seçeneğiyle hata ayıklamayı etkinleştirmeyi deneyin. Açtıktan sonra hatalar için konsola bakın.

Bu formdur. Web sitenizde kullanın, umarım işinize yarar. Söylenecek başka ne var? Şimdi yorumlarda konuşalım. Anlaşılmayan bir şey olup olmadığını sorun. Ayrıca bir hata bulursanız lütfen hemen bana bildirin, düzeltelim...

Bu kadar. İlginiz için teşekkür ederiz. Sonraki yazılarda görüşmek üzere!

Merhaba. Bu dersimizde tam teşekküllü bir geri bildirim formu hazırlayacağız ve bu form, sayfadaki bir düğmeye tıkladığınızda kalıcı bir pencerede görünecektir. Bu dersi sıfırdan, yalnızca jQuery çerçevesini ve küçük bir JavaScript'i kullanarak kendim yaptım. Ders çok ilginç, bu yüzden lütfen atlamayın! Aşağıda oluşturduğum formun bir gösterimini görebilir ve indirebilirsiniz. iş için gerekli dosyalar:

Adım 1. Geri bildirim formunun genel tanımı ve işleyişi:

Öncelikle size hangi dosyalara ihtiyacımız olacağını ve aslında bunlara neden ihtiyaç duyulduğunu anlatacağım:

  • resimler - formumuzdaki tüm resimlerin saklandığı klasör;
  • index.html - geri bildirim formunu çağırma düğmesinin bulunacağı ana "indeks" dosyası;
  • contact.html formun kendisini içeren dosyadır. Kalıcı pencereye dahil edilecek olan bu dosyadır;
  • send.php - mektupların gönderilmesinden sorumlu bir işleyici dosyası;
  • jquery.js - ana jQuery çerçevesi;
  • style.css, formumuz için basamaklı stil sayfaları içeren bir dosyadır.

O halde sırayla devam edelim... Form şu şekilde çalışacak: Kullanıcı, kalıcı pencereyi çağırmak için düğmenin bulunduğu sayfaya gider, ona basar, ardından ziyaretçinin tüm bilgileri girdiği form görünür. mesajın verisi ve metni girilip gönderilir, ardından mektubun başarılı veya başarısız gönderildiğine ilişkin mesajın bulunduğu sayfaya yönlendirilir. Hepsi bu kadar, şimdi formumuzu oluşturmaya başlayalım...

Adım 2. Formu çağırmak için düğme.

Bu nedenle, formun bulunduğu kalıcı penceremizin görünmesi için onu bir şekilde bunu yapmaya zorlamamız gerekiyor. Bunu yapmak için sayfaya normal bir düğme yerleştirmemiz yeterli. Böyle bir düğmenin kodu, kendisine uygulanan stillerle birlikte aşağıda gösterilmiştir:

Yöneticiye bir mesaj yazın

3. Adım. Formun kendisi + bunun için ayarlar

Şimdi geri bildirim formumuzu nereye yerleştireceğimizi bulalım. Ve zaten dersin kaynak kodunda bulunan contact.html dosyasında bulunacaktır. Bu form oldukça küçük olduğundan kodunu aşağıya koyacağım:

Yönetime Mesaj Gönderme:

*İsim: *E-posta: Ders: *İleti:

Gördüğünüz gibi kodu incelediğimizde çıplak gözle bile formun daha iyi görüntülenmesi için bir tablo düzeni kullandığımı görebilirsiniz. Tüm form alanlarını eşitlemek açısından bu benim için çok faydalı oldu.

4. Adım. Mektupların gönderilmesinden sorumlu işlemci

Burada size hızlı bir şekilde mektup göndermek için kullanılan ana işlemciyi anlatacağım. Kaynak kodunda olduğu için kodunu burada vermeyeceğim. İçeriğini indirin ve görüntüleyin. Eğer PHP'yi benim gibi orta düzeyde biliyorsanız, bu işleyicinin kodunun tamamını kendiniz kolayca ayrıştırabilirsiniz. Her şey hazırsa devam edelim...

Adım 5. Ana jQuery çerçevesini “vidalamak”

Şimdi, herhangi bir jQuery dersinde olduğu gibi, ana jQuery çerçevesini “vidalamamız” gerekiyor. Bunun için biraz geriye giderek butonumuzun bulunduğu yere ve etiketlerin arasına aşağıdaki kodu ekleyelim:

Adım 6: Formu Şekillendirme

Gördüğünüz gibi formumuza ait stiller style.css dosyasında ayrı ayrı yer alıyor çünkü bu stiller çok fazla yer kaplıyor. Aşağıdaki kodu indeks dosyamıza bağlamamız yeterli:

Adım 7. jQuery iyileştirmeleri

Şimdi form kalıcı penceresinin tam olarak çalışması için aşağıdaki jQuery kodunu eklemeliyiz:

$(function() ( $("a").overlay(function() ( var sarma = this.getContent().find("div.wrap"); if (wrap.is(":empty")) ( sarma.load(this.getTrigger().attr("href"));

Çözüm.

İlginç geri bildirim formumuz hazır. Yol uzun ve zordu, bu yüzden herhangi bir şey anlamıyorsa, bu derse yapılan yorumlarda sorularınızı dinleyeceğim. Benim için bu kadar, tekrar görüşmek üzere arkadaşlar!

Saygılarımla, jQuery rehberiniz - M.K.

Herkese selam. Bir düğmeye tıkladıktan sonra kalıcı bir pencerede görünen ve gönderdikten sonra başarı veya başarısızlıkla ilgili bir mesajın görüntüleneceği bir formun nasıl uygulanacağına ilişkin soru bombardımanına tutulduk.

İnternette buna benzer pek çok şey olduğunu düşünüyorum ama insanlar sorduğu için bunu yapmaya karar verdim. Ayrıca, geri arama düğmesinin uygulanabilmesi için bu tür işlevlerin hemen hemen her açılış sayfasında mevcut olması gerekir. Ve aslında, artık açık formların kalıcı bir pencerede gizlenen ve bir düğmeye tıklandıktan sonra açılan formlardan daha kötü çalıştığını gösteren AB testi sonuçlarının sayısı giderek artıyor.

Bazıları bunun, insanların yavaş yavaş "bağışıklık geliştirmesi" ve açık biçimin agresif bir satış olmasından kaynaklandığını öne sürüyor. İddiaya göre artık kullanıcının açık bir form gördüğünde kendisine bir şey "satmaya" çalıştığına inandığı dönem geldi. Bu teoriye tamamen katılmıyorum, ancak bir miktar doğruluk var. Bu bazı iş türlerinde geçerli olabilir. Şimdi formu uygulamaya geçelim.

Not! Her eylemi ayrıntılı olarak anlatmayacağım, ancak kaynak kodunda size hazır bir sürüm sunacağım. Sorularınız varsa yorumlara yazın. çözeceğiz :)

Bugün jQuery ile değil, butonun ve formun düzeniyle başlayacağız. Tüm komut dosyalarını sayfanın sonuna ekleyeceğiz.

Tıklandığında kalıcı bir pencere açacak bir düğme:

Başvurunuzu gönderin

Herhangi bir sınıfı ayarlayabilirsiniz, ancak href'te #modal yazın - bu, gölgeli ve iletişim formlu kabın kimliği olacaktır.

Şimdi formun kodunu ve formun yer alacağı bloğu vereceğim:

İletişim bilgilerinizi bırakın, danışmanımız sizinle iletişime geçsin. Bu formu web sitem için istiyorum.

Stilleri ekledikten sonra şöyle görünüyordu:


Kalıcı bir pencere oluşturmak için Remodal kütüphanesi kullanıldı. Bu, yalnızca animasyonlu modal pencereler oluşturmak için kullanılan bir dizi css ve js dosyasıdır. Bağlantıdan veya yazının sonundaki düzenlemelerimle indirebilirsiniz.

Head etiketlerinin arasına stiller ekliyoruz:

Ve kapanış gövde etiketinden önce komut dosyaları ekleyin:

Script.js, formu işlemeye yönelik bir komut dosyasıdır. Sayfayı yeniden yüklemeden tüm prosedürü gerçekleştirmemize olanak tanıyan aynı Ajax:

$(document).ready(function () ( $("form").submit(function () ( // Form kimliğini alın var formID = $(this).attr("id"); // Bir karma ekleyin isme göre var formNm = $("#" + formID(( type: "POST", url: "mail.php", data: formNm.serialize(), başarı: function (data) ( // Gönderim sonucunun çıktı metni $(formNm).html(data); error: function (jqXHR, text, error) ( // Gönderim hatasının metnini gösteriyor $(formNm).html(error); ) ) ));

Modal pencere ve formdan sorumlu dosyalardan css ve js'nin kaynak kodunu oldukça büyük oldukları için vermeyeceğim. Eğer öyleyse, kaynağa bakın. Ancak PHP işleyicisi büyük ölçüde standarttır (eğer öyle söyleyebilirsem):

Lütfen e-posta adreslerinizi kendi e-posta adresinizle değiştirmeyi unutmayın.

Bu elimizdeki ajax formu. Her bir öğenin nasıl yapıldığını ayrıntılı olarak açıklamaya çalışmadığım için özür dilerim. Sadece bitmiş bir sonuç vermek istedim ama tüm animasyonları ve görünümleri açıklamanın bir anlamı yok. Kaynağı indirin ve web sitenize uygulayın. Ve bugünlük bu kadar. Hepinize iyi şanslar!

Arkadaşlar, formu gerçek veya sanal bir sunucuda (barındırma) test etmenizi öneririm. Lütfen sunucunuzun PHP'yi desteklediğinden, ücretli bir planınız olduğundan ve deneme süreniz olmadığından emin olun. Aksi takdirde vakaların %90'ında form çalışmayacaktır.

Dizin dosyasını tarayıcınızda yeni açtıysanız ve "Gönder" düğmesini tıkladıysanız, gelen kutunuza bir mektup gelmesini beklemeyin. Php sunucu taraflı bir dildir!

Bunu çözemeyecek ve formu kendiniz yapamayacak kadar tembelseniz, dikkat etmenizi öneririm.

Makalenin güncellenmiş hali şu adreste yer almaktadır: