2012-05-14 3 views
0

Я пытаюсь принимать значения от a, а затем и когда они отправляются, превращают значения в файлы cookie. Это то, что у меня есть, но я хотел знать, есть ли способ сделать это, поэтому мне не нужно было писать одно и то же для всех переменных.Установить файлы cookie для элементов формы

function submitValues(){ 

var firstName = document.forms["frm1"]["first_name"].value; 
var lastName = document.forms["frm1"]["last_name"].value; 
var number = document.forms["frm1"]["phNum"].value; 

setCookie("firstName",firstName,365); 
setCookie("lastName",lastName,365); 
setCookie("number",number,365); 
} 
+0

Я не вижу, как вы пишете то же самое для всех переменных. Три переменные, скорее всего, имеют три разных значения. Где возникает вопрос о «том же»? –

+0

Я считаю, что он/она означает, что будет больше полей, к которым необходимо установить cookie со значением, а не firstName, lastName и числом. Таким образом, возникает вопрос: «Есть ли способ перебрать все поля формы и создать файл cookie с соответствующим значением для каждого поля в форме?» Без необходимости объявлять каждое из значений как переменную, как они писали выше. – sbeliv01

+0

Да, sbeliv01 был прав, я не очень хорошо задавал вопрос. Есть ли способ, которым я смогу сделать это с параметрами? Когда у меня есть что-то вроде '['frm1"] ["first_name"]. Value; 'и есть параметры внутри цитат, которые не работают. – user1290426

ответ

2

Если вы хотите установить куки для всех элементов формы, используйте DOM2 form.elements collection:

var els = document.forms.frm1.elements; 
for (var i=els.length;i--;){ 
    setCookie(els[i].name, els[i].value, 365); 
} 

Если вы хотите только конкретные, а затем написать свой код так:

var els = document.forms.frm1.elements; 
var cookiesToSet = ['first_name','last_name','phNum']; 
for (var i=cookiesToSet.length;i--;){ 
    var name = cookiesToSet[i]; 
    setCookie(name, els[name].value, 365); 
} 

В вышеприведенном els[name] эквивалентно document.forms.frm1.elements[name].

В общем, каждое свойство каждого объекта в JavaScript доступно либо через «точечную нотацию» (foo.bar), либо в виде «скобки» (foo["bar"]). Вы должны использовать последнее, если имя свойства не является допустимым идентификатором (foo["names[]"] или foo["12 freakin' whales!"]) или при построении имени свойства из переменной (foo[name] или foo["item"+i]).

2

Вы могли бы сократить его до некоторой степени, сохраняя ссылку на форму в переменной, например, так:

var form = document.forms["frm1"]; 

var firstName = form["first_name"].value; 
//...and so on 

Или сократить его еще больше, обернув через все <input> элементы в виде:

var formInputs = document.forms["frm1"].getElementsByTagName("input"); 
for (var i=0;i<formInputs.length;i++) { 
    setCookie(formInputs[i].name, formInputs[i].value, 365); 
} 
Смежные вопросы