में सभी इनपुट को सत्यापित करने (आवश्यक) की आवश्यकता है। मैं jQuery (1.8.3) का वर्तमान संस्करण और jQuery मान्य (1.10.0) का नवीनतम संस्करण उपयोग कर रहा हूं, और ऐसा लगता है कि इंटरनेट में एक्सप्लोरर 8, jQuery सत्यापन मान्य रूप से परिभाषित किए गए फॉर्म पर सभी इनपुट को मान्य कर रहा है, न केवल परिभाषित नियमों वाले। यह अन्य ब्राउज़रों (आईई 9 +, एफएफ, क्रोम) में ठीक काम करता है, और अगर मैं jQuery का उपयोग 1.9.0 का उपयोग करता हूं तो यह ठीक काम करता है।jQuery मान्य प्लगइन v1.10 IE8
यहाँ एक उदाहरण है कि इस मुद्दे को दर्शाता है:
<!DOCTYPE html>
<html>
<head>
<title>IE8 + jQuery Validate 1.10 Test</title>
<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'></script>
<script type='text/javascript' src='http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js'></script>
</head>
<body>
<div>
<form id="my-form">
<label for="my-required-field">required:</label>
<input id="my-required-field" type="text" name="reqField" />
<label for="my-optional-field">optional:</label>
<input id="my-optional-field" type="text" name="optField" />
<input id="wh-submit-button" type="submit" value="submit" />
</form>
</div>
<script type="text/javascript">
$(document).ready(function() {
var form = $("#my-form");
var validator = form.validate({
rules: {
"reqField": { required: true }
},
messages: {
"reqField": { required: "this field is <i>actually</i> required" }
}
});
$("#wh-submit-button").click(function() {
if (validator.form()) {
alert('passed validation');
}
});
});
</script>
</body>
</html>
IE8 में, "पारित कर दिया सत्यापन" चेतावनी सक्रिय नहीं होगा, और वैकल्पिक फ़ील्ड के रूप में आवश्यक चिह्नित किया जाएगा।
मैं स्पष्ट रूप से वैकल्पिक फ़ील्ड के रूप में की आवश्यकता नहीं चिह्नित करते हैं, इसे सही ढंग से काम करता है:
rules: {
"reqField": { required: true },
"optField": { required: false }
}
हालांकि, यह निश्चित रूप से हर इनपुट तत्व है कि वैकल्पिक रूप स्पष्ट रूप से की आवश्यकता नहीं है चिह्नित करने के लिए है करने के लिए करने से इनकी है, और है कि जहां तक मुझे पता है, पिछली आवश्यकता कभी नहीं रही है।
मुझे पता है कि jquery और jquery के पुराने संस्करणों के साथ समस्याएं थीं, लेकिन वे स्पष्ट रूप से jQuery मान्य 1.8.1 के साथ हल किए गए थे - मैं इस मुद्दे को उठा रहा हूं क्योंकि यह jquery के नवीनतम संस्करणों के साथ प्रतीत होता है और प्लगइन मान्य करें।
अद्यतन:
तो, समस्या केवल प्रकट होता है जब इंटरनेट एक्सप्लोरर F12 डेवलपर उपकरण का उपयोग कर IE8 व्यवहार का अनुकरण करने के लिए खुद को प्रकट करने के लिए। टिप्पणी के आधार पर सुझाव दिया गया है कि आईई 8 में दिए गए नमूने के साथ कोई वास्तविक समस्या नहीं थी, मैंने एक सच्चे इंटरनेट एक्सप्लोरर 8 इंस्टॉलेशन के साथ एक पूर्ण विंडोज वीएम बनाया, और वास्तव में, कोई समस्या नहीं थी। यद्यपि एक एमुलेटर और असली चीज़ के बीच स्पष्ट रूप से मतभेद हैं, लेकिन मैंने पहले कभी जावास्क्रिप्ट अनुकरण के साथ ऐसा कोई मुद्दा नहीं देखा था, और इस तथ्य से फेंक दिया गया कि यह अचानक jQuery सत्यापन 1.10 के साथ हो रहा है।
चूंकि यह केवल इम्यूलेशन के साथ एक मुद्दा है, वास्तविक चीज़ नहीं, यहां हल करने के लिए कुछ भी नहीं है; और मुझे यह खुलासा करना चाहिए था कि यह पहले स्थान पर एमुलेटर के माध्यम से था ... लेकिन शायद कोई और एक ही जाल में गिर जाएगा और यह एक उपयोगी संदर्भ होगा।
कोड IE8 http://jsfiddle.net/BGDfr/1/ – charlietfl
में मेरे लिए ठीक काम करता है की कोशिश करो सुनिश्चित नहीं है कि आप सबमिट बटन का उपयोग क्यों करते हैं 'फॉर्म()' कॉल करने के लिए हैंडलर पर क्लिक करें 'submitHandler' कॉलबैक का उपयोग करने पर विचार कर सकते हैं – charlietfl
क्या @charlietf एल ने कहा। 'Validate() 'प्लगइन में पहले से ही' submitHandler: 'बनाया गया है। अपने स्वयं के क्लिक हैंडलर का उपयोग करके, आप फॉर्म पर प्लगइन को अनावश्यक रूप से पुन: प्रारंभ कर रहे हैं। मैंने कई परिस्थितियों को देखा है जहां यह सभी प्रकार के अजीब मुद्दों का कारण बनता है जैसे कि बटन दो बार क्लिक करना आदि। – Sparky