2015-08-04 9 views
7

आज इंटरनेट एक्सप्लोरर में एक स्पष्ट बग मिला, लेकिन अनुसंधान के माध्यम से सत्यापित करने में असमर्थ। क्या किसी ने इसका सामना किया है और/या कृपया समझा सकता है?क्यों इंटरनेट एक्सप्लोरर लगातार सबमिट घटना को ट्रिगर नहीं करता है?

सार

इंटरनेट एक्सप्लोरर (कम से कम 9 और 11) हमेशा गति प्रदान नहीं करता है (या संभाल?) घटना सबमिट करें। एक मामला नोट किया गया जहां सबमिट बटन पर क्लिक करने से कुछ हद तक जल्दी से कुछ सबमिट किए जाने का कारण बनता है। क्रोम और फ़ायरफ़ॉक्स में यह समस्या नहीं देखी गई है।

टेस्ट मामले

  • एकल इनपुट और एकल सबमिट बटन के साथ सरल रूप है।
  • फार्म पर जावास्क्रिप्ट हैंडलर प्रस्तुत: प्रदर्शन submit, और फिर वापस जाने के झूठे
  • जावास्क्रिप्ट सबमिट बटन के क्लिक पर संभालती है: प्रदर्शन click
  • jQuery स्पष्टता के लिए इस्तेमाल किया (एक ही मुद्दा बराबर गैर jQuery समाधान के साथ देखा जाता है)
  • परीक्षण निष्पादित करने के लिए, उपयोगकर्ता को सबमिट बटन को जल्दी से डबल-क्लिक करना होगा और देखें कि कौन सी घटनाएं प्रबंधित की जाती हैं।

टेस्ट परिणाम

फ़ायरफ़ॉक्स और क्रोम काम अपेक्षा के अनुरूप:

click 
submit 
click 

कोई दूसरा प्रस्तुत है:

click 
submit 
click 
submit 

इंटरनेट एक्सप्लोरर कुछ (हमेशा की तरह) अजीब करता है ! केवल आईई के साथ, क्लाइंट हैंडलर को नहीं कहा जाता है, और फिडलर दिखाता है कि अनुरोध उत्पादन वातावरण में कभी नहीं होता है। (ध्यान दें कि यह उदाहरण कोड वास्तव में अनुरोध को पोस्ट नहीं करेगा, return false के कारण।)

कार्य स्निपेट: कृपया नीचे स्क्रॉल करें और रन स्निपेट पर क्लिक करें, फिर सबमिट बटन पर डबल क्लिक करने का प्रयास करें, और परिणामों का निरीक्षण करें। JSFiddle

feedback = function (t) { 
 
    $div = $("<div class='line'></div>"); 
 
    $div.html(t); 
 
    $("#feedback").append($div); 
 
}; 
 
$("#theForm").on("submit", function (e) { 
 
    feedback("submit"); 
 
    return false; // don't actually submit form, or SO chokes 
 
}); 
 
$("#btnSubmit").on("click", function (e) { 
 
    feedback("click"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id='theForm' action="DISABLED BY RETURN FALSE" method="POST"> 
 
    <input type='text' /> 
 
    <input id='btnSubmit' type='submit' /> 
 
</form> 
 
<div id='feedback'></div>

उत्तर

0

सुनिश्चित नहीं हैं कि तुम क्या इस के साथ प्राप्त करने के लिए कोशिश कर रहे हैं, लेकिन मेरा अनुमान है कि आप फार्म के दोहरे प्रस्तुतियाँ को रोकने के लिए कोशिश कर रहे हैं? उस स्थिति में शायद आप कुछ ऐसा उपयोग कर सकते हैं जैसे:

feedback = function (t) { 
    $div = $("<div class='line'></div>"); 
    $div.html(t); 
    $("#feedback").append($div); 
}; 
$("#theForm").on("submit", function (e) { 
    feedback("submit only once"); 
    $(this).find("#btnSubmit").attr("disabled", "disabled"); 
}); 
संबंधित मुद्दे