2009-11-10 15 views
20

Tamam, bu sadece benim bilgi için olandan daha az bir soru (çünkü çalışmasını sağlayacak yaklaşık 4 farklı çalışma etrafında düşünebiliyorum çünkü). çok özel) fakat gönderme düğmesi.Javascript Submit, Gönderme Düğmesi Değerini içermiyor Okunur

<input type='submit' name='submitDocUpdate' value='Save'/> 

kendisiyle ilişkili belirli bir değere sahip Ve form gönderildiğinde aldığında o isimde kontrol edin.

if(isset($_POST['submitDocUpdate'])){ //do stuff 

ancak, ben bir zaman vardır mektubu gönderme düğmesi yerine Javascript ile göndermeye çalışıyorum.

document.getElementById("myForm").submit(); 

1 Sorun dışında hangi çalışıyor, sorun. Javascript yöntemi ile gönderilen $ _POST değerlerine baktığımda, submitDocUpdate dahil değildir. Formun diğer tüm değerlerini alıyorum, ancak gönderme düğmesi değerini değil.

Dediğim gibi, etrafta çalışmak için birkaç yol düşünebilirim (gizli bir değişken kullanarak, başka bir form değişkeninde isset'i kontrol edin, vb.) Ancak bunun yalnızca gönderenin doğru davranışı olup olmadığını merak ediyorum() çünkü bana göre daha az sezgisel görünüyor. Şimdiden teşekkürler.

cevap

26

Evet, bu HTML formları tasarlanmıştır çünkü tıklandığı Gönder düğmesini değerini göndermek böylece (olan HTMLFormElement.submit()

senin düğmesi değeri gönderilmez gönderme nedeni doğru davranıştır ya da başka bir şekilde aktive edilir). Bu, hem "Önizleme" hem de "Kaydet" eylemini istediğiniz senaryo gibi, her biçim için birden çok gönderim düğmesinin kullanılmasına izin verir.

Form aracılığıyla program aracılığıyla gönderdiğiniz için, tek bir gönderme düğmesi üzerinde açık bir kullanıcı eylemi yoktur, böylece hiçbir şey gönderilmez.

+0

Ah. Bu çok mantıklı. Birden çok gönderme düğmesiyle programlı olarak gönderme kavramını düşünmemiştim (çok sık çoklu kullanmıyorum). Teşekkür ederim;) –

+0

can sıkıcı. Formu gönderildiğinde (düğme tıklandığında) tetiklenen $ form.on ('submit', function() {}); 'işlevini kullanıyorum, ancak bu, düğmenin tıklatılmasına izin vermeyi geçersiz kılıyor gibi görünüyor. Onclick, sadece tıklatılan düğmelerin tıklatılmasını engellemek için sayfada bir değişiklik yapmak istediğimde formun gönderilmesini engellediğinden onsubmit kullanmayı denedim, ancak ... sonra ... açıkladığın için teşekkürler! – Jake

7

Neden bunun yerine aşağıdakileri kullanmıyorsunuz?

<input type="hidden" name="submitDocUpdate" value="Save" /> 
+0

@Tim Cooper - Formda birden çok düğme varsa ne olur? – MarcoZen

1

Kullanıcı, düğmeyi tıkladığında gönderme düğmesi değeri gönderilir. Form.submit() çağrısı, düğmeyi tıklatmıyor. Birden çok gönderim düğmeniz olabilir ve form.submit() işlevinin, sunucuya hangisini göndermek istediğinizi bilmesinin bir yolu yoktur. jQuery 1.0 veya daha büyük bir versiyonunu kullanarak

9

: Aslında aynı sorun üzerinde çalışıyordu

$('input[type="submit"]').click();

Ben bu yazı tökezledi. Herhangi bir argüman olmadan click() 'i tıkladığınızda seçtiğiniz herhangi bir öğe üzerinde bir tıklama olayı tetiklenir: http://api.jquery.com/click/

+0

Çok ilginç bir ipucu. Teşekkürler. –

1

Kabul edilen cevap teknik olarak doğru olsa da. Atamak istediğiniz değeri taşımanın bir yolu var. Aslında, sunucuya sunucuya gönderildiğinde, gönderme düğmesinin değeri, gönder düğmesine verdiğiniz adla ilişkilendirilir. Marcin hilesi böyle çalışır ve kullandığınız şeye bağlı olarak yapabileceğiniz birçok yol vardır. Ör.jQuery Eğer

MVC
data: { 
    submitDocUpdate = "MyValue" 
} 

ben kullanırım geçebileceği:

@using (Html.BeginForm("ExternalLogin", "Account", new { provider = "Steam" }, FormMethod.Post, new { id = "steamLogin" })) 
{ 
    <a id="loginLink" class="steam-login-button" href="javascript:document.getElementById('steamLogin').submit()"><img alt="Sign in through Steam" src="https://steamcommunity-a.akamaihd.net/public/images/signinthroughsteam/sits_01.png"/></a> 
} 
: Ben OAuth kullanarak giriş bağlantısı olarak onların kendi imajını kullanarak buhar şartını yerine nasıl

@using (Html.BeginForm("ExternalLogin", "Account", new { submitDocUpdate = "MyValue" })) 

Bu aslında

İlgili konular