HTML 表单输入标签名称元素数组与 JavaScript
这是一个由两部分组成的问题。前几天有人回答了类似的问题(其中也包含有关 PHP 中此类数组的信息),但我找不到它。
1.) 首先,对于在表单中输入标记的名称元素末尾创建的数组,正确的术语是什么?
<form>
<input name="p_id[]" value="0"/>
<input name="p_id[]" value="1"/>
<input name="p_id[]" value="2"/>
</form>
2.) 如何使用 JavaScript 从该数组中获取信息?具体来说,我现在只想计算数组的元素。这是我所做的,但它不起作用。
function form_check(){
for(var i = 0; i < count(document.form.p_id[]); i++){ //Error on this line
if (document.form.p_name[i].value == ''){
window.alert('Name Message');
document.form.p_name[i].focus();
break;
}
else{
if (document.form.p_price[i].value == ''){
window.alert('Price Message');
document.form.p_price[i].focus();
break;
}
else{
update_confirmation();
}
}
}
}
This is a two part question. Someone answered a similar question the other day (which also contained info about this type of array in PHP), but I cannot find it.
1.) First off, what is the correct terminology for an array created on the end of the name element of an input tag in a form?
<form>
<input name="p_id[]" value="0"/>
<input name="p_id[]" value="1"/>
<input name="p_id[]" value="2"/>
</form>
2.) How do I get the information from that array with JavaScript? Specifically, I am right now just wanting to count the elements of the array. Here is what I did but it isn't working.
function form_check(){
for(var i = 0; i < count(document.form.p_id[]); i++){ //Error on this line
if (document.form.p_name[i].value == ''){
window.alert('Name Message');
document.form.p_name[i].focus();
break;
}
else{
if (document.form.p_price[i].value == ''){
window.alert('Price Message');
document.form.p_price[i].focus();
break;
}
else{
update_confirmation();
}
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
“经常令人困惑的 PHPism”
就 JavaScript 而言,一堆同名的表单控件只是一堆同名的表单控件,而名称中包含方括号的表单控件也只是名称中包含方括号的表单控件括号。
具有相同名称的表单控件的 PHP 命名约定有时很有用(当您有多个控件组时,您可以执行如下操作:),
但确实会让一些人感到困惑。一些其他语言自最初编写以来就采用了该约定,但通常仅作为可选功能。例如,通过此 JavaScript 模块。
这仍然只是从
elements
获取与表单控件同名的属性。技巧是,由于表单控件的名称包含方括号,因此不能使用 点表示法并且必须使用方括号表示法,就像任何其他包含特殊字符的 JavaScript 属性名称。由于您有多个具有该名称的元素,因此它将是一个集合而不是单个控件,因此您可以使用利用其 length 属性的标准 for 循环对其进行循环。
"Oftimes Confusing PHPism"
As far as JavaScript is concerned a bunch of form controls with the same name are just a bunch of form controls with the same name, and form controls with names that include square brackets are just form controls with names that include square brackets.
The PHP naming convention for form controls with the same name is sometimes useful (when you have a number of groups of controls so you can do things like this:
) but does confuse some people. Some other languages have adopted the convention since this was originally written, but generally only as an optional feature. For example, via this module for JavaScript.
It is still just a matter of getting the property with the same name as the form control from
elements
. The trick is that since the name of the form controls includes square brackets, you can't use dot notation and have to use square bracket notation just like any other JavaScript property name that includes special characters.Since you have multiple elements with that name, it will be a collection rather then a single control, so you can loop over it with a standard for loop that makes use of its length property.
尝试这样的事情:
Try this something like this:
document.form.p_id.length
...不是 count()。你真的应该给你的表单一个 id
然后使用以下方式引用它:
然后引用如下元素:
document.form.p_id.length
... not count().You really should give your form an id
Then refer to it using:
Then refer to the elements like:
按顺序回答您的问题:
1)没有具体的名称。它只是具有相同名称的多个元素(在本例中也是类型)。名称不是唯一的,这就是发明 id 的原因(它应该是唯一的)。
2)
To answer your questions in order:
1) There is no specific name for this. It's simply multiple elements with the same name (and in this case type as well). Name isn't unique, which is why id was invented (it's supposed to be unique).
2)
下面是一些 PHP 和 JavaScript 演示代码,展示了在表单上创建索引字段(具有相同名称的字段)然后在 JavaScript 和 PHP 中处理它们的简单方法。这些字段必须同时具有“ID”名称和“NAME”名称。 JavaScript 使用 ID,PHP 使用 NAME。
Here’s some PHP and JavaScript demonstration code that shows a simple way to create indexed fields on a form (fields that have the same name) and then process them in both JavaScript and PHP. The fields must have both "ID" names and "NAME" names. Javascript uses the ID and PHP uses the NAME.