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>
请提出您宝贵的建议
答案 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]