Как получить ценность контента, который становится скрытым или автоматически сгенерированным? - PullRequest
0 голосов
/ 11 августа 2010

Этот вопрос возникает после решения моего последнего вопроса , я хотел бы получить некоторые значения из скрытых форм, но когда я пытаюсь получить их, появляются только пустые строки, я подумал только об использованиимассивы для хранения информации, как она представлена, но я хотел бы знать, возможно ли просто получить ее впоследствии и как.

Кроме того, существует таблица, которая генерируется на лету с использованием некоторого 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;  

    }

После того, как он создан, я попытался получить к нему доступ, но пока безуспешно, я просто не могу получить то, что пользователь вводит в создаваемые поля ввода.Как я могу это сделать?

Я использую raw javascript с jQuery, поэтому приветствуются ответы с библиотекой или без нее:)

1 Ответ

0 голосов
/ 11 августа 2010

document.getElementById ( "invoiceFormat"). Cb1 [3] .Checked Прежде всего, я не знаю, что означает здесь «.cb1 [3]», поэтому я проигнорирую его и расскажу, как бы я решил эту проблему: (я предполагаю, что «invoiceFormat» - это идентификатор вашей формы.) 1) в вашей форме задайте имя свойства каждого поля, которое вы имеете. таким образом, вы можете добраться до них, как document.getElementById("invoiceFormat").fieldName.value

если вы будете использовать этот метод, убедитесь, что поместили вашу форму в локальную переменную. это будет намного быстрее

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

2) присвойте каждому полю уникальный идентификатор и просто используйте getElementById непосредственно в полях, а не в форме. Я не судюсь, если этот метод лучше, но я все время использую второй. Я просто привык к этому, я думаю.

3) есть еще один способ, но это может быть излишним. когда вы создаете поля формы, вы можете поместить их в объект (не значения, а сами элементы) и даже скрыть его в замыкании . Таким образом, вы можете назвать что-то вроде

formElements.formFieldOne.value;
...