如何在js中获取多个选择列表数据?

时间:2018-08-27 12:51:38

标签: javascript

Implementation

我需要获取带有键的选择框值(我将用于更新用户)

我使用以下功能

<form onsubmit = "return checkForm(this)" method="POST" action = "">
<select name="user[11]">
     <option value='1'>one</option>  
     <option value='2'>two</option> 
</select>

<select name="user[12]">
     <option value='1'>one</option>  
     <option value='2'>two</option> 
</select>

</form>

请提出您宝贵的建议

4 个答案:

答案 0 :(得分:2)

您可以使用document.querySelectorAll()和通配符作为name属性:

[name^="user["]

这意味着,找到具有name开头的user[属性的所有元素。

如果要从name属性获取键,请按照以下方式进行映射:

userArray.map(element => Number(element.name.match(/\d+/)[0]));

let userArray = Array.from(document.querySelectorAll('[name^="user["]'));

let userArrayKeys = userArray.map(element => Number(element.name.match(/\d+/)[0]));

console.log("Matched elements",userArray);

console.log("Their Keys", userArrayKeys);
<form onsubmit="return checkForm(this)" method="POST" action="">
  <select name="user[11]"> <!-- I will get selected -->
    <option value='1'>one</option>
    <option value='2'>two</option>
  </select>

  <select name="user[12]"> <!-- I will get selected -->
    <option value='1'>one</option>
    <option value='2'>two</option>
  </select>
  
  <select name="update[12]"> <!-- I will not get selected -->
    <option value='1'>one</option>
    <option value='2'>two</option>
  </select>
</form>

不过,您应该给输入字段起一个更好的名称,以更好地反映它们所保存的数据。

答案 1 :(得分:1)

那是一个奇怪的标记命名(我不建议在属性值中使用Sub SaveAs() Dim Mtch as Variant Dim FPath As String Dim NewBook As Workbook FPath = "\\G:\Exceptions" Mtch = (Application.Match("Test", Worksheets("Sheet 1").Range("A1:A42"), 0)) & ".xls" If not iserror(mtch) then If Dir(FPath & "\" & Worksheets("Sheet 1").Cells(Mtch,2).Value) <> "" Then MsgBox "File " & FPath & "\" & FName & " already exists" Else ThisWorkbook.SaveAs filename:=FPath & "\" & FName End If Else msgbox "the value not found in the column End if End Sub [。)您可以使用document.querySelectorAll来解决它,它允许您选择元素使用CSS选择器。

我用过

]

document.querySelectorAll('select[name^="user["]') 6.2. Substring matching attribute selectors的一部分。 ^=的意思是“ 选择名称属性以“ user [” ”开头的位置。这将选择具有[name^="user["]但也具有user[1]user[2]user[2][1]users[hello]users[hello

的元素

users[hello...
console.log(document.querySelectorAll('select[name^="user["]'));

答案 2 :(得分:0)

您必须在下面进行选择

function checkForm(frm){
  var inps1 = document.getElementsByName('user[11]');
  console.log(inps1 );
  var inps2 = document.getElementsByName('user[12]');
  console.log(inps2 );
}

答案 3 :(得分:0)

除非需要user索引,否则可以跳过它们,例如:

<select name="user[]">...</select>
<select name="user[]">...</select>

<!-- $_POST values:
    [user] => Array
    (
        [0] => 1
        [1] => 1
    )
-->

然后尝试获得它们:

console.log(document.getElementsByName('user[]'));
// NodeList(2) [select, select]