Bir HTML Formu görünür alanlara ™ â € ~ onlya € işlemek nasıl?

7 Cevap php

Bir ile alanları işlemek için bir yolu var mı "display: none" tarzı? Alanlar dinamik olarak javascript kullanarak gizlidir ama PHP normalde işlenir.

Ben bir PHP çözüm (javascript) arıyorum.

7 Cevap

Form yapılandırılmış nasıl bağlı olarak, gizli girişlerin name özniteliği kaldırmak için uygun bir yöntem olabilir. ne olursa olsun Javascript bu satırı eklemek, giriş gizlemek için kullanabilirsiniz:

myInputElement.removeAttribute('name');

Isim vermeden Girişler formu ile teslim edilmez. Geri dönmek (ve tekrar girişlerini göstermek) gerekebilir varsa, bir yere alınabilir adını saklamak düşünmek isteyebilirsiniz: belki her öğe üzerinde id olarak aynı name kullanın ya elemanın class yere bağlıyor içine saklayın.


Daha iyi bir fikir, Colin tarafından önerilen, yerine eleman devre dışı olacaktır. Bu ancak geri dönmek için çok daha kolay olurdu, adını kaldırarak olarak aynı etkiye sahip olacak, sen gerekir gerekir.

myInputElement.disabled = true;

Benim hatırladığım girişin disabled form verilerini teslim olmayacak olan o değildir. Gizlemek Yani alan da özürlü niteliğini ayarlayın. Isimleri ve kimlikleri ile muck gerek yok.

W3C:

Bu örnekte, GİRİŞ eleman devre dışı bırakılır. Bu nedenle, kullanıcı girişi alamaz ne de değeri formu ile birlikte teslim edilecektir.

Sen'' gizli alanlardaki tüm değerleri ayarlamak için javascript kullanabilirsiniz. ("Display: none;" style =) İsteğe bağlı jQuery gibi bir kütüphane tarzına dayalı alanları seçin yardımcı olabilecek kolay bir şekilde ...

Çeşitli alanlarda isim özniteliği kaldırın. PHP bunları işlemek olmaz.

Ben Javascript azından bazı değişiklikler yapmadan bunu yapabilirsiniz emin değilim.

Since the fields are hidden in the browser (probably using CSS), there's no way for the PHP script that receives the form to know which ones are hidden (it doesn't get the current CSS state) unless the javascript helps out.

I'd recommend, as suggested before, getting the javascript to remove the name attribute so the fields aren't submitted.

There is no way for PHP to detect if a HTML form was hidden. The only ways are: A) Unsetting the name with JS

Bu sorun size form öğesini etkinleştirmek yeniden isterseniz adını kaybetmek ve bunu değiştirmek için depolama somem yol var olması.

B) Adding an additional hidden field stating that the field is hidden (with JS again) This will add more data to the HTTP POST, which could be considered a disadvantage. Plus you'd then need to have PHP in place to check if the "fieldHidden" $_POST var is set.

Bunun bir örneği "[hiddenFieldName] HiddenFields" ve daha sonra bir kullanarak bir adla gizli bir öğe oluşturmak olacaktır eğer kontrol ediyoruz sonrası değişkenin adı ile array_key_exists.

Bu tür convulated, ama yine de bunu arzu PHP değişkeni acccess atalım olacaktır.

C) setting the field to read only. (again, with JS) This would work, I think. But then PHP doesn't have access to it, which may be an issue.

Bir forma görünür olanları seri hale ve onu göndererek, ya da görünmez olanları kaldırarak ya sonra form elemanları görünür olduğunu görmek için görünür seçici ve: Sen kullanarak (örnek olarak jQuery kullanarak) bu yapamadı.

http://docs.jquery.com/Selectors/visible http://docs.jquery.com/Selectors

http://docs.jquery.com/Ajax/serialize http://docs.jquery.com/Ajax

Ancak, bu form elemanları görünmez olunca boş yapılmış ve ardından sunucu tarafında onları isteğe bağlı hale yüzden sadece bunu yapmak için çok daha kolay olacaktır.

EDIT There's no way I can think of to have PHP not process them unless you send it instructions one way or another. Anything that has a name will be processed, except checkboxes, which are indicated off by lack of a value. As far as I know, there is no way for PHP to tell what the visible status of a field was on the client side when the form was submitted.

Belki virgül veya bir şey tarafından birleştirilmiş bir ekstra gizli alanına, engelli / görünmez alanların isimlerini ekleyebilir, ve ona görünür alanları işlemek değil PHP inşa olabilir. Aksi takdirde proc_ ve noproc_ ya da bir şey ile başlamak için alan adlarını işlemek ve alanını işlemek isteyip bir talimat olarak kullanan, ancak yine sadece PHP için ekstra talimatları geçiyor olabilir.