2010-08-11 18 views
0

Cette question vient après solving my last question, je voudrais obtenir des valeurs hors des formes cachées mais quand je tente de les récupérer uniquement les chaînes vides viennent par, je l'ai juste à l'aide des tableaux envisageai pour stocker les informations lors de son introduction, mais J'aimerais savoir s'il est possible de le récupérer par la suite et comment.Comment obtenir la valeur d'un contenu caché ou généré automatiquement?

De plus, Il y a une table qui est générée à la volée avec javascript:

function createTable(){ 
     if (document.getElementById("invoiceFormat").rowNumber.value != ""){ 
      rows = document.getElementById("invoiceFormat").rowNumber.value; 
     } 

     var contents = "<table id='mt'><tr>"; 

     if (document.getElementById("invoiceFormat").cb1[0].checked){ 
      contents = contents + "<td class='htd'>Quantity</td>"; 
     }if (document.getElementById("invoiceFormat").cb1[1].checked){ 
      contents = contents + "<td class='htd'>Description</td>"; 
     }if (document.getElementById("invoiceFormat").cb1[2].checked){ 
      contents = contents + "<td class='htd'>Unitary Price</td>"; 
     }if (document.getElementById("invoiceFormat").cb1[3].checked){ 
      contents = contents + "<td class='htd'>Subtotal</td>"; 
     } 

     for (i=4; i<=k; i++){ 
      if (document.getElementById("invoiceFormat").cb1[i].checked){ 
       contents = contents + "<td>" + document.getElementById("invoiceFormat").cb1[i].value + "</td>"; 
      } 
     } 


     contents = contents + "</tr>"; 

     for (j=1; j<=rows; j++){ 
      contents = contents + "<tr>"; 
      for (l=0; l<=k; l++){ 
       if (document.getElementById("invoiceFormat").cb1[l].checked){ 
       hotfix = l +1; 
       contents = contents + "<td> <input id='cell" + j + "_" + hotfix + "' name='cell' type='text' size='15' /> </td>"; 
       } 
      } 
      contents = contents + "</tr>"; 
     } 

     contents = contents + "</table>"; 
     var createdTable = document.getElementById("mainTable"); 
     createdTable.innerHTML = contents; 

    } 

après sa création, je l'ai essayé d'y accéder, mais sans la chance jusqu'à présent, je ne peux pas obtenir ce que l'utilisateur entre dans les champs de saisie créés. Comment puis-je faire ceci?

J'utilise javascript brut avec jQuery donc des réponses avec ou sans la bibliothèque sont les bienvenus :)

Répondre

0

document.getElementById ("invoiceFormat"). CB1 [3] .checked d'abord tout ce que je ne sais pas ce « .cb1 [3] » signifie ici, donc je vais l'ignorer et vous dire comment je résoudre ce problème: (Je suppose que « invoiceFormat » est id de votre formulaire.) 1) dans votre propriété de nom de l'ensemble sous forme de chaque champ que vous avez. De cette façon vous pouvez les atteindre comme document.getElementById("invoiceFormat").fieldName.value

si vous utilisez cette méthode assurez-vous que mettre votre formulaire dans une variable locale. il sera beaucoup plus rapide

var form = document.getElementById("invoiceFormat"); 
form.fieldName.value; 

2) donner tous les domaines que vous avez un identifiant unique et il suffit d'utiliser getElementById directement sur les champs non sur la forme. Je ne suis pas en justice si cette méthode est meilleure, mais j'utilise la seconde tout le temps. Je m'y habitue, je suppose.

3) il y a une autre façon, mais il pourrait être un surpuissant. Lorsque vous créez vos champs de formulaire, vous pouvez les placer dans un objet (pas des valeurs mais les éléments eux-mêmes) et même le cacher dans un closure. De cette façon, vous pouvez appeler quelque chose comme

formElements.formFieldOne.value;