繁体   English   中英

javascript添加数组项以形成值

[英]javascript add array item to form value

我有一个隐藏字段的表单:

<input type="hidden" name="newdesc[]" id="newdesc" />

我有一个autolookup和一个加号按钮,所以加号按钮将autolookup的字段值添加到一个数组:

newdesc_a.push(document.getElementById('autocomplete1').value);
var x=document.getElementById("businesslist");
x.innerHTML=newdesc_a;
document.getElementById('newdesc').value = newdesc_a;

(newdesc_a以前声明为数组)

它会更新div OK(业务列表),但不会将值分配给newdesc。

我确信这很简单,但这让我很生气!

鉴于name="newdesc[]"属性,我假设服务器端有PHP。 当您提交密钥两次或更多次时,脚本中只有最后一个值可通过$_REQUEST 在以[]结尾的键的情况下,PHP构建一个数组并通过$_REQUEST['key']使其可用于您的脚本。 请注意,此行为是特定于应用程序的,在HTTP级别上没有类似于数组的行为。

现在,您希望将数组从客户端(Javascript)传递到后端(PHP)。 您有两种选择:

  1. 使用专有格式,例如逗号或冒号分隔值,并在服务器端拆分字符串(或者您可以使用现有格式,如JSON,XML,...)

  2. 利用PHP语法传递数组

您似乎想采用第二种方式,因此您需要提交如下表单

<input name="email[]" value="joel@example.com" />
<input name="email[]" value="mark@people.com" />
<input name="email[]" value="bill@hello.com" />

如果您像这样构建表单,PHP将能够访问$_REQUEST的普通数组。 现在,您遇到了按需编程方式构建表单的问题。 这是我能想到的最好的(jQuery):

var email = $("#autocomplete").value;

// if you really need to keep emails in an array, just
// emails.push(email);

$('<input type="hidden">').attr({
    name: 'email[]',
    value: email
}).appendTo('#myForm');

您想为该元素分配特定的数组值吗?

你可以像这样使用。

document.getElementById('newdesc').value = newdesc_a.index;

其中'index'是数组的索引。 代替它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM