2011-05-08 11 views
8

ओपेरा 11 में एचटीएमएल 5 क्लाइंट-साइड फॉर्म सत्यापन का उपयोग करते समय फॉर्म सबमिशन को कैसे रोकें?ओपेरा 11 में एचटीएमएल 5 क्लाइंट-साइड फॉर्म सत्यापन का उपयोग करते समय फॉर्म सबमिशन को कैसे रोकें?

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

मान्यता ओपेरा 11 में काम करता है, लेकिन जब बटन एक मूल्य के प्रवेश करने के बाद क्लिक किया जाता है, ब्राउज़र प्रपत्र सबमिट:

यहां नमूने के परीक्षण पृष्ठ है।

मैं चाहता हूं कि ब्राउजर हमेशा वेबपृष्ठ पर रहें, जो क्लाइंट-साइड-स्क्रिप्ट के लिए अच्छा है, स्थानीय हार्ड ड्राइव पर, जहां कोई सर्वर नहीं है, उदाहरण के लिए।

जब मैं return false; जोड़ता हूं या फ़ॉर्म को सबमिट करने से रोकने की कोशिश करता हूं, तो सत्यापन अब काम नहीं करता है।

ओपेरा 11.10 बिल्ड 2092

संपादित करें:

robertc के समाधान के लिए धन्यवाद, मैं यह काम कर रहा मिला है। JQuery के बिना परीक्षण पृष्ठ यहां है।

(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>

+0

मुझे लगता है कि आप 'required' नहीं लिख लेकिन इसके बजाय चाहिए' आवश्यक = "आवश्यक "'। पता नहीं है कि यह कारण है, हालांकि। –

+3

मुझे लगता है कि 'आवश्यक = "आवश्यक" 'एक्सएचटीएमएल के लिए है और एचटीएमएल 5 या तो स्वीकार करता है (मान्य भी)। मैंने बस "आवश्यक" स्ट्रिंग के साथ प्रयास किया, लेकिन परिणाम में कोई अंतर नहीं है। – XP1

उत्तर

9

ठीक है, try this

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

फिर submit घटना एक समारोह जो checkValidity() प्रणाली को बुलाती है करने के लिए बाध्य: प्रपत्र मूल रूप से पहले की तरह है

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

यहां तक ​​कि 'कार्रवाई' के साथ या बिना, सत्यापन कार्य करता है। समस्या यह है कि मैं नहीं चाहता कि ब्राउज़र फॉर्म जमा करे। मैं केवल काम करने के लिए सत्यापन चाहता हूँ। – XP1

+0

@ XP1 क्षमा करें, मैंने आपकी समस्या को गलत समझा - मैं थोड़ा सा जवाब – robertc

+0

@ XP1 ओके में अपडेट करूँगा, इस बार सही सवाल का जवाब दिया, मुझे लगता है कि यह फ़ायरफ़ॉक्स था जो फ़ॉर्म पर काम नहीं करने में कोई समस्या नहीं थी लक्ष्य, लेकिन ऐसा लगता है कि उन्होंने अंतिम 4.0 रिलीज से पहले इसे ठीक कर दिया था। – robertc

संबंधित मुद्दे