में काम नहीं कर रहा है मैं jQuery का उपयोग कर वेबपैप विकसित कर रहा हूं। मेरे पास कार्यक्षमता है जो 3 इनपुट फ़ील्ड की नई पंक्ति जोड़ती है। इन डोम तत्वों को बनाने के बाद मैं इनपुट फ़ील्ड में से एक को ध्यान केंद्रित करना चाहता हूं। मैं जरूरी इनपुट फ़ील्ड पर jQuery फोकस() फ़ंक्शन को कॉल करने के साथ कर रहा हूं।jQuery फोकस() कभी-कभी आईई 8
समस्या यह है कि कॉलिंग फोकस() आईई 6 और एफएफ 3.5 में ठीक काम करता है, लेकिन आईई 8 में काम नहीं कर रहा है।
मैं इसे दिखाने के लिए इस समस्या का सरल काम करने का उदाहरण बनाने की कोशिश कर रहा था, लेकिन कोड फोकस() के पट्टी संस्करण के साथ ठीक काम कर रहा है। तो मेरा अनुमान था कि आईओ 8 में फोकस() को कॉल करते समय डीओएम तैयार नहीं है। इसके लिए मैंने सेटटाइमआउट ('मायफोकस()', 400) को कॉल करने का प्रयास किया। मुझे सफलता मिली और कुछ मामलों में फोकस वास्तव में काम कर रहा था लेकिन अभी भी हमेशा नहीं। यादृच्छिक रूप से यह मेरे इनपुट फ़ील्ड पर ध्यान केंद्रित नहीं करता है।
प्रश्न है: क्या किसी को भी इसी तरह की समस्याओं का सामना करना पड़ा है और क्या किसी को यह पता है कि इसे कैसे कामयाब किया जाए? सेटटाइमआउट का उपयोग करना बहुत बदसूरत कामकाज की तरह लगता है।
अग्रिम
में Tnx संपादित: 26.08.2009
सरल उदाहरण पर पुन: पेश करने सफल। यहां HTML + JS कोड है जो IE8 पर इस बग को पुन: उत्पन्न करता है।
<html>
<head>
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
function performChanged() {
formChanged = true;
}
function handleChange() {
var parentDiv = $('#container');
newValue = $(html).html();
parentDiv.html(newValue);
$(".sel1",parentDiv).bind('change',handleChange);
//alert('Uncomment this and after alert focus will be on input');
$("input.cv_values",parentDiv).focus();
}
$(document).ready(function() {
$('.trackChange').bind('change', handleChange);
});
var html = '<div class=\"div1\">\n<select class=\"sel1\" id=\"sel1\" name=\"sel1\"><option value=\"\"><\/option>\n<option value=\"11\">Select me to see problem<\/option>\n<\/select>\n\n\n<input class=\"cv_values\" id=\"sel3\" name=\"sel3\" size=\"30\" type=\"text\" value=\"\" /><br/>Focus should in input field. With alert it is but without alert focus is not there</div>';
</script>
</head>
<body>
<select class="trackChange" onchange='performChanged();'>
<option value=""></option>
<option value="1" >Select me to generate new inputs</option>
</select>
<div id="container"></div>
</body>
पुन: पेश करने के लिए: 1) पहले ड्रॉप-डाउन से चयन मूल्य। आप देखेंगे कि पहली बार इनपुट 2 काम कर रहा है 2) दूसरे ड्रॉपडाउन से मूल्य का चयन करें। आप देखेंगे कि बग पुन: उत्पन्न होता है।
फिर कोड में आप लाइन को टिप्पणी कर सकते हैं जहां यह जेएस अलर्ट() दिखाता है। अजीब बात यह है कि अगर यह चेतावनी है() तो फोकस करने के बाद ठीक काम कर रहा है।
उम्मीद है कि यह समझने में सहायता करता है कि मेरी समस्या कहां है।
पीएस मुझे इस तरह से काम करने के लिए मेरे ऐप की आवश्यकता है - यह ड्रॉपडाउन से मूल्य चुनने के बाद उन इनपुट को पुन: उत्पन्न कर रहा है। यह मेरे ऐप का सरलीकृत उदाहरण है;)।
कोड स्निपेट पोस्ट करें। चीजों को आसान बनाता है। – krishna
क्या आपने विंडो के "लोड" ईवेंट पर ध्यान केंद्रित करने की कोशिश की है ("DOMContentLoaded" पर नहीं, a.k.a. - 'document.ready (...)' - एक)? – kangax