2016-03-22 10 views
1

Bazı girdilerden oluşan bir formum var ve bu girişlerden bazıları devre dışı. Devre dışı bırakıldıkları için, içerdikleri verileri göndermeyeceklerdir. Bu yüzden, gönderim sırasında disabled özelliğini kaldırmak için aşağıdaki jQuery kodunu kullanın. 'disabled' özelliğini formdan kaldırın ve yeniden etkinleştirin

jQuery(function ($) {   
    $('form').bind('submit', function() { 
     $(this).find(':input').prop('disabled', false); 
    }); 
}); 

kullanıcı Gönder düğmesini tıkladığında

, disabled mülkiyet silinirse bu alanlardaki veriler gönderilir ve bir dosya (kullanıcı aynı sayfada yüzden başlıklarını kullanın) indirilir. Ancak, disabled özelliği artık kaldırıldığından, kullanıcı bu alanları değiştirebilir ve formu istemediğim kendi verileriyle yeniden gönderebilir.

Sorunuz, form gönderildikten sonra belirli alanları yeniden devre dışı bırakmak için kodumu nasıl değiştirebilirim.

+0

Bu alanlardaki veriler kullanıcının görmesi için önemli midir? Aksi takdirde, inputları 'type =" hidden "' ile kullanabilirsiniz. Aksi takdirde, 'devre dışı bırak' özelliğini gönderdikten sonra true değerine geri döndürün (hangi girişlerin devre dışı bırakılması gerektiğini izlemek için bir sınıf kullanabilirsiniz). – blex

+0

Evet, kullanıcının görmesi önemlidir, ancak bunları düzenlemelerini istemiyorum. – Bijan

+0

Gönderildikten sonra alanları nasıl yeniden devre dışı bırakırım? – Bijan

cevap

1

Muhtemelen (ve jQuery olmadan) readonly yerine disabled aradığınız:

<input type="text" name="readOnlyValue" value="666" readonly="readonly" /> 

Bu konu farklı ve answered in details here istendi. Kısaca:

  • disabled önler odaklanmak ve
  • readonly odak verir veri göndermesini engeller ancak değiştirerek engeller ve kullanıcı kolayca yapabiliyor olarak veri Ancak dikkatli olun

gönderilecek sağlar Sayfayı keserek input değerini değiştirin. Bu yüzden, sunucu tarafında kötü niyetli kullanıcılarla başa çıkmaya hazır olmalısınız.

+0

Evet. Aslında bunu yanıtınızı vermeden önce bunu yapmayı bitirdim.Benim cevabımın üstündeki cevabımı görüyorum çünkü bunun bir devre dışı bırakılmış düğme gibi biçimlendirilmesini istedim – Bijan

+0

Testere, cevabımı hemen benim üzerimde yayınladıktan sonra görmek biraz üzgündü! Bu arada, varsayılan tarayıcı stili tarayıcılar arasında çok şey değiştirebildiğinden, "normal olmayan" (hatta devre dışı) girişlere bir şekilde stil eklemenizi öneririm. – blint

+1

Yaptığımdan hemen önce yanıt kredisi vereceğim ve (şimdi kaldırılmış) yorumunuzun bu parçada olduğumun sebebi olduğundan eminim. – Bijan

0

Bir geçici çözüm buldum.

yerine disabled olarak her giriş ayar, bunun disabled alan olarak aynı stil sahip olmak için ama readonly olarak ayarlayabilirsiniz, ben bir örnek göstermek için aşağıdaki CSS

input:read-only { 
    background-color: #EBEBE4; 
    color: #545454; 
    border-style: hidden; 
    padding: 3px; 
} 

jsFiddle eklendi iki

0

arasındaki fark Sorunuzu doğrudan yanıtlamak için: Formunuzu eşzamansız bir xmlhttprequest ile gönderirseniz, düğmelerinizi geri arama işlevinde yeniden kapatabilirsiniz.

<input type="text" value="samedata" disabled> 
<input type="hidden" name="actualnamedfield" value="samedata"> 

Sadece ilki görünür ve sadece ikinci bir teslim alır geçerli:

Ancak, en kolay çözüm verilerini henüz türü olarak başka bir zaman böyle = "gizli" eklemek olduğunu düşünüyorum.

+0

Doğru ama sonra her giriş için 2 alanım olacaktı özürlü. Ben sadece alan salt okunur yapma sona erdi bu yüzden herhangi bir jQuery/Javascript – Bijan

+0

ile uğraşmak zorunda değilim Evet, ben tam olarak ne teklif ediyorum. En az iş gerektirir, çakışmaz, herhangi bir platforma engelli bakışı verir ve JS gerektirmez. – jayms

İlgili konular