如何使用JavaScript的HTML表单输入标记名称元素数组?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

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();
            }
        }
    }
}
提问于
用户回答回答于

试试这:

var p_ids = document.forms[0].elements["p_id[]"];
alert(p_ids.length);
for (var i = 0, len = p_ids.length; i < len; i++) {
  alert(p_ids[i].value);
}
用户回答回答于

“有时候混淆PHPism”

就JavaScript而言,一组具有相同名称的表单控件只是一堆具有相同名称的表单控件,而带有方括号的表单控件只是名称中包含方括号的表单控件。

具有相同名称的表单控件的PHP命名规则有时是有用的(当你有一些控件组,所以你可以做这样的事情:

<input name="name[1]">
<input name="email[1]">
<input name="sex[1]" type="radio" value="m">
<input name="sex[1]" type="radio" value="f">

<input name="name[2]">
<input name="email[2]">
<input name="sex[2]" type="radio" value="m">
<input name="sex[2]" type="radio" value="f">

)但是会混淆一些人。其他一些语言已经采用了这个惯例,因为这是最初编写的,但通常只是作为一个可选的功能。例如,通过这个模块的JavaScript

2.)我如何从JavaScript数组中获取信息?

这只不过是一个从名单上获得与形式控制相同的财产的问题elements。诀窍是,由于表单控件的名称包含方括号,因此不能使用点表示法,而必须使用方括号表示法,就像包含特殊字符的任何其他JavaScript属性名称一样。

既然你有多个这样的名字的元素,它将是一个集合而不是一个控件,所以你可以用一个标准的for循环来循环使用它的length属性。

var myForm = document.forms.id_of_form;
var myControls = myForm.elements['p_id[]'];
for (var i = 0; i < myControls.length; i++) {
    var aControl = myControls[i];
}

扫码关注云+社区

领取腾讯云代金券