2010-02-27 3 views
5

Vous cherchez de l'aide avec mon code jQuery.jQuery focus de formulaire après la création d'un élément

Je crée une boîte modale, en utilisant la simplemodal plugin

je gère pour créer une zone modale sur le clic d'un élément, qui contient une forme .... Je voudrais la forme d'avoir l'accent sur le champ textarea quand il apparaît, mais je suis incertain de la façon d'y parvenir ..

Voici mon code actuel ..

$('#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 
})); 

Vous vous demandez comment je peux faire le textarea avoir le focus lorsque la boîte modale apparaît?

Toute aide serait appréciée, merci

Répondre

1

Pour donner le focus à un élément de forme, utilisez focus().

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

Juste avant return false;, ajouter $('#sMessages').focus(); (voir jQuery docs).

+0

oui, ont essayé avant, mais ne marche pas semblent fonctionner dans ce cas, pas pourquoi – namtax

+0

Hm. Vous pouvez essayer .prepend ($ (textField)), plutôt que juste .prepend (textField) - cela fera que jQuery créera l'élément en premier, puis l'insérera. Cela pourrait aider. Vous pouvez également placer $ ('# sMessages'). Focus(); dans un bloc setTimeout d'une milliseconde ou deux. Le navigateur peut avoir besoin d'un moment avant de pouvoir trouver la nouvelle zone de texte. – kevingessner

0

utilisation

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

au lieu de

$('selector').focus(); 

($ (...). Mise au point (function() {}) se fixe en fonction de se concentrer événement à ne pas faire attention.)

+0

ne fonctionne pas non plus .. étrange, peut-être un peu bizarre avec la boîte modale – namtax

+0

@takpar - 'focus (function() {})' lie. 'trigger()' déclencheurs. – user113716

1

essayez ceci:

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

Le focus ci-dessus s'applique à l'élément Element non jQuery.

+0

aussi, ne semble pas fonctionner malheureusement – namtax

0

envelopper dans un délai d'attente pour l'obtenir au travail: comme le fait here

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