2010-02-27 4 views
5

Auf der Suche nach etwas Unterstützung mit meinem jQuery-Code.jQuery Formular Fokus folgenden Element Erstellung

Ich bin eine modale Box zu schaffen, mit dem simplemodal plugin

Ich bin die Verwaltung eine modale Box auf dem Klick eines Elements zu schaffen, die ein Formular enthält .... Ich möchte die Form Fokus haben auf das Textfeld Feld, wenn es erscheint, aber ich bin nicht sicher, wie dies zu erreichen ..

Hier ist meine aktuellen Code ..

$('#showModal a').live('click',(function(){ 
     // Build Modal Box Container And Add to Page  
     $('<div id="osx-modal-content">\ 
      <div id="osx-modal-title"><h2>Please explain this song.</h2></div>\ 
      <div id="osx-modal-data"> \ 
      <p class="loaderGif"> <img src="http://localhost:8500/mxRestore/images/ajax-loader.gif"> </p>\ 
     </div>\ 
     </div>').appendTo('body'); 

     //Set Modal Box Options     
     $("#osx-modal-content").modal({ 
       // OPTIONS SET HERE 
       overlayClose:true, 
       onOpen:OSX.open, 
       onClose:OSX.close 
      }); 

     // I have a hidden form on the page...grab its HTML!! 
     var modalForm = $('#addTmWrapper').html(); 

     // Dynamically build a text area and add to the form... 
     // The text area from my hidden form wont show properly for some reason.....maybe a coldfusion issue 

     var textField= '' 
     textField+= '<textarea name=' + '"sMessage"' + 'id="sMessages"' + 'cols="62"' + 'rows="3"' + 'class="textarea word_count">' + '</textarea>' 

     // Add hidden form to modal box, add textarea to form.. 
     // Then show it      
     $('#osx-modal-data').html(modalForm).find('#addTmForm') 
       .prepend(textField) 
       .show(); 
    return false 
})); 

fragen sich, wie ich das Textfeld den Fokus machen, wenn das modale Feld angezeigt wird?

Jede Hilfe würde geschätzt, dank

Antwort

1

Um den Fokus auf ein Formularelement zu geben, verwenden focus().

$('#myElement').focus() 
0

Kurz vor return false;, fügen $('#sMessages').focus(); (siehe jQuery docs).

+0

ja, haben diese zuvor versucht getan, aber scheint nicht in diesem Fall zu arbeiten, sich nicht sicher, warum – namtax

+0

Hm. Vielleicht möchten Sie .prepend ($ (textField)), anstatt nur .prepend (textField) - das wird jQuery zuerst das Element erstellen und dann einfügen. Es könnte helfen. Alternativ könnten Sie die $ ('# sMessages') setzen. Focus(); in einem setTimeout-Block von einer Millisekunde oder zwei. Der Browser benötigt möglicherweise einen Moment, bevor er das neue Textfeld tatsächlich finden kann. – kevingessner

0

Verwendung

$('selector').trigger('focus'); 

statt

$('selector').focus(); 

($ (...). Fokus (function() {}) bindet eine Funktion Ereignis konzentrieren Fokus nicht tun.)

+0

funktioniert auch nicht..Strange, vielleicht ein bisschen Eigenart mit der modalen Box – namtax

+0

@takpar - 'focus (function() {})' bindet. 'focus()' löst aus. – user113716

1

versuchen Sie dies:

var aSet = $('selector'); 
aSet[0].focus(); 

Der Fokus oben gilt für Element nicht jQuery-Objekt.

+0

auch, scheint leider nicht zu arbeiten – namtax

0

es in einem timeOut Wickeln, um es an die Arbeit: als here

setTimeout(function(){ 
    $('selector').focus(); 
}, 0);