2011-05-08 23 views
8

Opera 11'de HTML5 istemci tarafı form doğrulaması kullanılırken form gönderimi nasıl önlenir?Opera 11'de HTML5 istemci tarafı form doğrulaması kullanılırken form gönderimi nasıl önlenir?

<section> 
 
    <h2>Test</h2> 
 
    <form> 
 
    <input type="text" name="test" id="test" required/> 
 
    <input type="submit" value="Test" /> 
 
    </form> 
 
</section>

Doğrulama Opera 11'de çalışır, ancak düğme bir değer girildikten sonra tıklandığında, tarayıcı formu gönderen: Burada

örnek bir deney sayfası.

Tarayıcının her zaman web sayfasında kalmasını istiyorum, bu yalnızca istemci tarafında sadece komut dosyaları için, örneğin sunucu olmayan yerel sabit diskte iyidir.

return false; eklediğimde veya formun gönderilmesini engellemeye çalıştığınızda, doğrulama artık çalışmaz.

Opera 2092

DÜZENLEME 11.10 Yapı: robertc en çözümüne

sayesinde çalışma var. İşte jQuery'siz test sayfası. Tamam

+0

Ben bunun yerine 'required' yazmak değil gerektiğini düşünüyorum' = "Gerekli gerekli "'. Yine de bunun sebebi olup olmadığını bilmiyorum. –

+3

Sanırım gerekli = "gerekli" 'XHTML için ve HTML5 bir tanesini kabul eder (aynı zamanda doğrular). Sadece "gerekli" dizeyle çalıştım, ancak sonuçta bir fark yok. – XP1

cevap

9

(function() { 
 
    "use strict"; 
 

 
    window.addEventListener("load", function() { 
 
    document.getElementById("testForm").addEventListener("submit", function(event) { 
 
     event.target.checkValidity(); 
 
     event.preventDefault(); // Prevent form submission and contact with server 
 
     event.stopPropagation(); 
 
    }, false); 
 
    }, false); 
 
}());
<section> 
 
    <h2>Test</h2> 
 
    <form id="testForm"> 
 
    <input type="text" name="test" id="test" required/> 
 
    <input type="submit" value="Test" /> 
 
    </form> 
 
</section>

, try this.

<section> 
    <h2>Test</h2> 
    <form id="form"> 
     <input type="text" name="test" id="test" required/> 
     <input type="submit" value="Test"/> 
    </form> 
</section> 

Sonra checkValidity() yöntemini çağıran bir işleve submit olayı bağlamak: formu daha önce olduğu gibi temelde

function manualValidate(ev) { 
    ev.target.checkValidity(); 
    return false; 
} 
$("#form").bind("submit", manualValidate); 
+0

"Eylem" ile veya eylem olmadan bile doğrulama çalışır. Sorun şu ki, tarayıcının formu göndermesini istemiyorum. Sadece geçerliliği çalışmak istiyorum. – XP1

+0

@ XP1 Üzgünüz, sorununuzu yanlış anladım - cevabımı biraz güncellemeye karar verdim – robertc

+0

@ XP1 Tamam, bu sefer doğru soruya cevap verdim, sanırım hiç sorun olmayan formlarda çalışmayla ilgili bir sorun yaşayan Firefox'du Hedef, ancak son 4.0 sürümünden önce düzeltilmiş gibi görünüyor. – robertc

İlgili konular