[Jquery]Focus su campo input appena creato col dom

  • Creatore Discussione Creatore Discussione angel
  • Data di inizio Data di inizio

angel

Utente Attivo
2 Nov 2009
109
0
0
Ciao a tutti, sapete dirmi come posso intercettare l'evento focus su un campo input creato col dom? :D
 
Come faresti normalmente. Basta che gli assegni un ID valido:
HTML:
<!doctype html>
<html>
    <head>
        <title>Prova</title>
        <meta charset="utf-8" />

        <script src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
        <script>
            $(function() {
                $("body").append('<input type="text" id="prova" />');
                $("#prova").focus(function() {
                    alert("focus");
                });
            });
        </script>
    </head>

    <body>
    </body>
</html>
 
Ti spiego cosa devo fare:
PHP:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
var e = 0;
    
function Make_input(nr,el){
for(var c=0;c<nr;c++){ e++;
$('#'+el).append('<input type="text" class="miaclasse" id="btn_'+e+'" value="btn_'+e+'"><br>');
}}
    
$(document).ready(function(){

Make_input(3,'s');        
$(document).click(function(event){
if(e < "10"){
var tgt = $(event.target);
if($(tgt).hasClass('miaclasse')){
if($(tgt).attr('id') == 'btn_' + e){
Make_input(1,'s');
}}}});

});    
</script> 
</head>
<body>

<div id="s"></div>

</body>
</html>

1)All'inizio ho 3 campi input cliccando sull'ultimo campo dovrebbe creare un nuovo campo
2)Quando clicca sull'ultimo campo cioè quello appena creato, dovrebbe creare un nuovo campo e cosi via, fino ad un massimo di 10 campi

Io vorrei fare che la stessa cosa avvenisse anche applicando l'effetto focus sull'ultimo campo, che sarebbe quello creato per ultimo. :)
 
Se non ho capito male puoi provare cosi:
aggiungi alla function Make_input() il focus sul campo appena creato
Codice:
function Make_input(nr,el){
                for(var c=0;c<nr;c++){ e++;
                    $('#'+el).append('<input type="text" class="miaclasse" id="btn_'+e+'" value="btn_'+e+'"><br>');
                    $('#btn_'+e).focus();
                }}
 
Non voglio fare il focus sul campo, ma voglio fare in modo che il nuovo campo venga creato anche quando faccio il focus sull'ultimo campo...
 
Se ho capito bene vuoi fare questo:
HTML:
<!doctype html>
<html>
    <head>
        <title>Prova</title>
        <meta charset="utf-8" />

        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <script>
            function applyHandler()
            {
                $(".campo").unbind("focus");
                $(".campo").last().focus(function() {
                    createField();
                });
            }

            function appendInput()
            {
                $("#contenitore").append('<input type="text" class="campo" /><br />');
            }

            function createField()
            {
                appendInput();
                applyHandler();
            }

            $(function() {
                createField();
            });
        </script>
    </head>

    <body>
        <div id="contenitore">
        </div>
    </body>
</html>
Cerca di adattare l'esempio.
 

Discussioni simili