2010-03-28 9 views
0

Dans le code suivant,Identification des éléments générés dynamiquement

<script> 
function val() 
{ 
    //get alltextarea to validate 
    } 
$(document).ready(function() { 
var html= '<form>' 
html += '<textarea name="test" id="test"'; 
    html += '<textarea name="test1" id="test1"'; 
html += 'form'; 

$('#get_div').append(); 
}); 

</script> 

<div id= "get_div"></div> 
<input type="button" onclick="val();" 

Les deux textareas sont dynamiquement generated.Now comment valider en fonction val.When je fais $ ('# test'). Val() ou document.getElementById (test) .value Je ne pouvais pas trouver les valeurs des textareas

Merci ..

Répondre

1

Vous ne pouvez pas faire la différence intrinsèque entre les éléments dynamiquement créés et ceux du balisage ordinaire. Ce que je vous suggère de faire est d'utiliser une classe marqueur si:

$(function() { 
    $("textarea").addClass("static"); 
    ... 
}); 

Ces zones de texte sans la classe statique sont créées dynamiquement. C'est bien sûr un schéma coopératif car rien ne vous empêche de créer un balisage dynamique avec la classe statique mais, comme je l'ai dit, vous ne pouvez rien y faire.

3

Vous n'êtes pas générer HTML valide, il y a quelques problèmes:

  • Les <textarea> éléments ne sont pas fermés.
  • L'élément <form> n'est pas fermé
  • Le onclick n'est pas truqué correctement (bettter fait via jQuery de toute façon)

Voici une version corrigée avec les modifications qui fonctionne:

jQuery:

$(document).ready(function() { 
var html= '<form>' 
    html += '<textarea name="test" id="test"></textarea>'; 
    html += '<textarea name="test1" id="test1"></textarea>'; 
    html += '</form>'; 
    $('#get_div').append(html); 
    $("input").click(function() { 
    alert($('#test').val());   
    }); 
});​ 

HTML:

<div id= "get_div"></div> 
<input type="button" Value="TestBtn"​ />​​​​​​​​​​​​​​ 

See a demo here

Questions connexes