设置表单元素的cookie

时间:2012-05-14 21:19:14

标签: javascript forms cookies

我正在尝试从一个和之后获取值,并在提交时将值转换为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);
}

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:2)

如果要为所有表单元素设置Cookie,请使用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])构造属性名称时,必须使用后者。