2010-11-21 7 views
0

Quelqu'un s'il vous plaît aidez-moi comment ajouter une nouvelle fonction pour supprimer le champ, j'ai fonction de script js qui ajoutent nouveau champ comme suitComment supprimer champ d'entrée qui a été insérée via JavaScript

<script language="javascript"> 
fields = 0; 
function addInput() { 
    if (fields != 10) { 
     var htmlText = "&nbsp;&nbsp;<input type='text' name='friends[]' value='' size='auto' maxlength='45' /><br />"; 
     var newElement = document.createElement('div'); 
     newElement.id = 'new_field'; 
     newElement.innerHTML = htmlText; 

     var fieldsArea = document.getElementById('new_field'); 
     fieldsArea.appendChild(newElement); 
     fields += 1; 

    } else { 
     alert("Only 10 fields allowed."); 
     document.form.add.disabled=true; 
    } 
} 
</script> 

mais j'ai besoin aide pour ajouter de nouvelles fonctions pour supprimer le champ, pour toute suggestion et pointeur je serais reconnaissant.

+0

si vous ajoutez quelques ids à la « div » ce sera easyer pour les obtenir pour l'enlèvement. – Bakudan

+0

Vous ne pouvez pas avoir 'newElement.id = 'new_field';' car chaque identifiant de la page doit être unique. Ajoutez quelque chose d'unique à votre identifiant. Je suggère quelque chose comme ceci: déclarer en dehors de la fonction une variable count = 0; chaque fois que vous ajoutez un nouveau nombre d'entrées ++; 'newElement.id = 'new_field' + count' – cristian

+0

Nice Suggestion Octopus-Paul, ben je Remplacer: newElement.id = 'new_field'; avec: newElement.id = 'new_field' + (champs + 1) ;, cela fonctionne aussi bien sur la plupart des navigateurs sauf IE, mais je ne suis pas sûr que j'étais correct, besoin de plus de pointeur, Merci beaucoup – jones

Répondre

0

Tout d'abord, il y a déjà un problème que je vois avec votre code. Vous définissez l'ID de chaque nouveau champ à la même valeur, qui est un code HTML non valide et qui demande des problèmes. Assurez-vous de résoudre ce problème. Le .removeChild method des éléments DOM est ce que vous voulez. .removeChild supprime un nœud (élément ou texte) de l'arborescence DOM (l'ensemble des éléments réellement contenus dans le document) uniquement si le nœud transmis est en réalité un enfant de cet élément, sinon une erreur se produit.

Vous pouvez facilement supprimer le dernier champ en trouvant le last child de son contenant:

function removeLastField() { 
    var fieldsArea = document.getElementById('new_field'), 
     lastChild = fieldsArea.lastChild; 
    if(lastChild) { 
     fieldsArea.removeChild(lastChild); 
     fields -= 1; 
    } 
} 
+0

Salut idealmachine, j'ai fait votre explication, mais ne semble pas encore fonctionné, sur le point de mettre id à l'ID unique, je devais essayer de remplacer: ewElement.id = 'new_field'; avec: newElement.id = 'new_field' + 1; c'est correct? s'il vous plaît ne pas hésiter à donner plus de suggestions, et Merci d'avance – jones

+0

Il n'est pas correct de mettre 'newElement.id = 'new_field' + 1' parce que tous les identifiants seront new_field1. Vos identifiants devraient être quelque chose comme new_field1, new_field2 .... – cristian

Questions connexes