dewn735 Δημοσ. 22 Απριλίου 2011 Δημοσ. 22 Απριλίου 2011 Για να εξηγήσω τον τίτλο: έχω έναν σύνδεσμο που ανοίγει "παράθυρο", φορτώνοντας δεδομένα μέσα ajax. Στο παράθυρο που ανοίγει, υπάρχει μία φόρμα με ένα textbox αναζήτησης, το οποίο επιστρέφει αποτελέσματα κατά την αναζήτηση. Το θέμα είναι ότι, ενώ επιστρέφει κανονικά τα αποτελέσματα με κάθε χαρακτήρα, δεν επιστρέφει το focus στο πεδίο και πρέπει κάθε φορά να κλικάρω σε αυτό. Στη σελίδα ο κώδικας είναι ο εξής: > <head> <script type="text/javascript"> function showHint(str, tab) { if (!tab) tab=3; var xmlhttp; if (window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();} else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");} xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("windowfilter").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","listmacs.php"+str+"&tab="+tab,true); xmlhttp.send(); } </script> </head> και στο listmacs.php έχω: ><?php $tab=clearstring($_GET['tab']); $searchstr = (ISSET($_GET['searchstr'])) ? clearstring($_GET['searchstr']) : ''; if ($tab==2) { echo "<div class='options'><form>"; echo "Αναζήτηση μηχανήματος: <input name='searchstr' value='".$searchstr."' id='searchstr' onBlur='this.focus();' onkeyup=\"javascript:showHint('?searchstr='+this.value+'&tab=2',2);\" type='text' />"; echo "</form></div>"; echo $searchstr; }?> Έχω δοκιμάσει πολλά και διάφορα, όπως: >document.getElementById('searchstr').focus(); >window.onload = function() { document.getElementById('searchstr').focus() }; όπως και αυτό που βρήκα σε σελίδα: >setTimeout("try{document.getElementById( 'searchstr' ).focus();}catch(error){}",100); χωρίς επιτυχία. Έχετε καμιά άλλη ιδέα;
Uberalles_gr Δημοσ. 23 Απριλίου 2011 Δημοσ. 23 Απριλίου 2011 Μου κάνει εντύπωση μιας και το έχεις γράψει σωστά.. Βασικά, μπορείς να γράψεις document.FORM_NAME.searchstr.focus() Βλέπω ότι μέσα στην listmacs.php, κλείνεις μια φόρμα, άρα βάζεις το όνομα της φόρμας. Το focus φαντάζομαι το κάνεις μετά το > document.getElementById("windowfilter").innerHTML=xmlhttp.responseText;
thanocaster Δημοσ. 23 Απριλίου 2011 Δημοσ. 23 Απριλίου 2011 Δοκίμασε να βάλεις το focus μέσα σε script tags στο listmacs.php αφού κάνεις echo τη φόρμα σου (χιντ: η print είναι γρηγορότερη από την echo): > <?php $tab = clearstring($_GET['tab']); $searchstr = (ISSET($_GET['searchstr'])) ? clearstring($_GET['searchstr']) : ''; if ($tab==2){ echo "<div class='options'><form>"; echo "Αναζήτηση μηχανήματος: <input name='searchstr' value='".$searchstr."' id='searchstr' onBlur='this.focus();' onkeyup=\"javascript:showHint('?searchstr='+this.value+'&tab=2',2);\" type='text' />"; echo "</form></div>"; echo $searchstr; } ?> <script type='text/javascript'> document.getElementById('searchstr').focus(); </script>
dewn735 Δημοσ. 23 Απριλίου 2011 Μέλος Δημοσ. 23 Απριλίου 2011 Σωστός ο uberalles, ό,τι είχα δοκιμάσει το έβαζα μετά το >xmlhttp.send(); @Thunocaster: το είχα δοκιμάσει κι αυτό, αλλά ούτε καν εκτελούσε το script
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.