2012-03-31 23 views
6

नीचे वह फ़ॉर्म है जिसे मैंने AJAX के माध्यम से लोड किया था। जब मैं सीधे फॉर्म पेज चलाता हूं तो c_name पर autofocus फ़ायरफ़ॉक्स में काम करता है लेकिन जब AJAX के साथ लोड होता है तो यह नहीं होता है! हालांकि ओपेरा/सफारी/क्रोम के साथ यह ठीक काम करता है!एचटीएमएल 5 का ऑटोफोकस विशेषता केवल फ़ायरफ़ॉक्स में काम नहीं करती है जब <Form><input> अजाक्स के माध्यम से लोड किया जाता है। क्यूं कर?

<form action="client_entry_action.php" method="post" id="client_entry_form" name="client_entry_form"> 

<fieldset id="client_info_1"> 

    <label for="c_name">Name:</label> 
    <input type="text" name="c_name" required placeholder="Name" autofocus="autofocus" /> 

    <label for="c_phone">Phone Number:</label> 
    <input type="tel" name="c_phone" required placeholder="Mobile/Phone Number" /> 

    <label for="c_email">Email:</label> 
    <input type="email" name="c_email" required placeholder="[email protected]" /> 

    <label for="c_address">Address:</label> 
    <textarea name="c_address" ></textarea> 


</fieldset> 

<fieldset id="client_info_2"> 

    <label for="c_info">Additional notes:</label> 
    <textarea name="c_info" ></textarea> 

    <input type="submit" name="add_client" value="Add Client" /> 

</fieldset>   

</form> 

उत्तर

6

ऑटोफोकस केवल ओवरलोड से पहले ही किया जाता है; यह प्रारंभिक पृष्ठ लोड पर ध्यान केंद्रित करने का एक घोषणात्मक तरीका है।

+0

यह ओपेरा के साथ ठीक काम करता है/सफारी/क्रोम हालांकि! क्या आप कृपया थोड़ा और विस्तार कर सकते हैं? – Vishu7

+5

spec विशेषता के लिए सटीक व्यवहार को परिभाषित नहीं करता है, इसलिए शामिल सभी कार्यान्वयन वास्तव में spec-compliant हैं। Spec _does_ वर्णन करता है कि सामान्य विचार क्या है, लेकिन विभिन्न ब्राउज़र यह समझते हैं कि किस व्यवहार से अलग होना चाहिए। –

0

मुझे एक ही समस्या है: ऑटोफोकस विशेषता कम से कम नवीनतम संस्करण में एफएफ में काम नहीं करती है। मेरे पास एक फॉर्म के साथ एक पॉप-अप विंडो भी है। इस पॉप-अप दीक्षा के लिए अजाक्स का उपयोग किया जाता है।

मुझे आशा है कि इन कड़ियों आप के लिए उपयोगी हो जाएगा:

Discussion on webmasters.stackexchange.com

Another discussion on stackoverflow

लेकिन मैं नहीं जावास्क्रिप्ट हैक्स का उपयोग करके को छोड़कर किसी भी अधिक सरल और अच्छी लग रही समाधान मिल गया है।

1

मुझे पता है कि यह पुराना है, लेकिन मुझे बस यह समस्या थी और शायद यह किसी की मदद करता है।

आप jQuery का उपयोग करते हैं यह काम करता है:

$("input[name='c_name']").focus(); 

जावास्क्रिप्ट इस (सामान्य उदाहरण) की तरह कुछ होगा:

document.getElementById('element').focus(); 

लेकिन आप अपने प्रपत्र ajax के माध्यम से भरी हुई है के बाद कि फ़ंक्शन को कॉल करने के लिए है !

5

उपयोग setTimeout div पर ajax कॉल या jQuery उपयोग का उपयोग कर .ajaxComplete के बाद, या .done

function theAjax(){ 
//after the ajax actions loaded...... 
//use settimeout to refocused on the input.. 
var t=setTimeout("focusMe()",500); 

}

function focusMe(){ 
document.getELementById("theInput").focus(); //the new input 

}

//using jquery use .ajaxComplete, or .done 
$(document).ajaxComplete(function() { 
    $("#focusOnMe").focus(); 
}