我有復選框組的表格,如下所示:
<input type="checkbox" name="group_one" value="1">
<input type="checkbox" name="group_one" value="2">
<input type="checkbox" name="group_two" value="1">
<input type="checkbox" name="group_two" value="2">
我想要實作的是在 form.change() 我想要一個陣列,其中包含復選框名稱和值陣列的鍵,就像這樣
var checkboxes = $('input').filter(':checked');
var myArray = [];
checkboxes.each(function () {
var name = $(this).attr('name');
var val = $(this).val();
myArray[name] = val;
});
結果,我試圖獲取一個以“name”為鍵,以“val”為陣列的陣列,如下所示:
[group_one: {1,2}, group_two: {1,2}]
我希望這是有道理的。感謝您提前提供任何幫助!
uj5u.com熱心網友回復:
您想要的輸出實際上應該交換陣列和普通物件表示法。外部結構是一個帶有命名鍵的普通物件,而內部結構是一個值陣列:
{group_one: [1,2], group_two: [1,2]}
因此,您需要將外部結構初始化為普通物件,并可能將其命名為復數:
var myArrays = {};
然后,在您的回圈中,檢查您是否已經擁有給定鍵的值。如果沒有,請創建一個陣列[]并將值添加到該陣列中。否則,將值添加到已經存在的陣列中:
$("form").change(function () {
var checkboxes = $('input').filter(':checked');
var myArrays = {};
checkboxes.each(function () {
var name = $(this).attr('name');
var val = $(this).val();
if (!(name in myArrays)) myArrays[name] = [];
myArrays[name].push(val);
});
$("pre").text(JSON.stringify(myArrays, null, 2)); // For debugging
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<input type="checkbox" name="group_one" checked value="1">Option 1
<input type="checkbox" name="group_one" value="2">Option 2
<input type="checkbox" name="group_one" checked value="3">Option 3
<br>
<input type="checkbox" name="group_two" value="1">Option 1
<input type="checkbox" name="group_two" checked value="2">Option 2
<input type="checkbox" name="group_two" checked value="3">Option 3
</form>
<pre></pre>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/405982.html
標籤:
上一篇:在Julia中使用StaticArrays.jl進行性能分配和復制
下一篇:計算C中陣列的最低小計
