2010-02-27 11 views
5

Buscando ayuda con mi código jQuery.jQuery form focus después de la creación del elemento

Estoy creando un cuadro de modal, mediante el simplemodal plugin

estoy manejando para crear un cuadro modal en el clic de un elemento, que contiene una forma .... Me gustaría tener la forma de enfoque en el campo área de texto cuando aparece, pero estoy seguro de cómo lograr esto ..

Aquí está mi código actual ..

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

se pregunta cómo puedo hacer que el área de texto tiene el foco cuando el cuadro de modal?

Cualquier ayuda se agradece, gracias

Respuesta

1

Para dirigir el foco a un elemento de formulario, utilice focus().

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

Justo antes return false;, añadir $('#sMessages').focus(); (ver jQuery docs).

+0

sí, han intentado esto antes, pero tampoco parece funcionar en este caso, sin saber por qué – namtax

+0

Hm. Es posible que desee probar .prepend ($ (textField)), en lugar de simplemente .prepend (textField): eso hará que jQuery cree primero el elemento y luego lo inserte. Podría ayudar. Alternativamente, podría poner el $ ('# sMessages'). Focus(); en un bloque setTimeout de milisegundos o dos. El navegador puede necesitar un momento antes de que pueda encontrar el nuevo área de texto. – kevingessner

0

uso

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

en lugar de

$('selector').focus(); 

($ (...). Centrarse (function() {}) se une una función para centrarse evento no hacer foco.)

+0

no funciona tampoco ... extraño, tal vez un capricho con el cuadro modal – namtax

+0

@takpar - 'focus (function() {})' binds. 'desencadenadores' focus() '. – user113716

1

probar esto:

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

el foco anterior se aplica al elemento no al objeto jQuery.

+0

también, parece que no funciona desafortunadamente – namtax

0

envolverlo en un tiempo de espera para conseguir que funcione: como se hace here

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