Javascript 如何将用于数学的选中输入值用作克隆的div元素的一部分
我已经编写了一个脚本,可以根据用户的需要克隆某个div。在div中有三个复选框输入选项,每个选项都是一个数值。我希望脚本允许用户选择一个复选框,然后该值将反映在另一个输入空间中,添加的每个值将用逗号分隔 棘手的部分是,应该为每个克隆执行此操作,并且每个复选框都具有相同的类名,脚本应该写入这些类名。我意识到使用唯一id会更好,但我希望for循环可以对特定类下的任意数量的复选框执行此操作 以下是html脚本:Javascript 如何将用于数学的选中输入值用作克隆的div元素的一部分,javascript,jquery,html,Javascript,Jquery,Html,我已经编写了一个脚本,可以根据用户的需要克隆某个div。在div中有三个复选框输入选项,每个选项都是一个数值。我希望脚本允许用户选择一个复选框,然后该值将反映在另一个输入空间中,添加的每个值将用逗号分隔 棘手的部分是,应该为每个克隆执行此操作,并且每个复选框都具有相同的类名,脚本应该写入这些类名。我意识到使用唯一id会更好,但我希望for循环可以对特定类下的任意数量的复选框执行此操作 以下是html脚本: <style> .hidden { display: none; }
<style>
.hidden {
display: none;
}
</style>
<body>
<h2>Test</h2>
<button id="add">Add</button>
<div class="test hidden">
<div class="user_input1">
<label>Input1</label>
<input class="input1" type="text" required>
<label>Input2</label>
<input type="text" name="value2" required>
<div class="user_input2">
<table>
<thead>
<tr>
<th>Pick Option</th>
</tr>
</thead>
<tbody>
<tr id="append">
<td><input class="test" type="checkbox" name="test" value="1">Test1</td>
<td><input class="test" type="checkbox" name="test" value="2">Test2</td>
<td><input class="test" type="checkbox" name="test" value="3">Test3</td>
</tr>
</tbody>
</table>
<input type="text" id="insert" name="check">
<button class="hidden" id="testbtn">Calc</button>
</div>
</div>
</div>
<form action="server/server.php" method="POST">
<div class="paste">
</div>
<button type="submit" name="insert_res">Submit</button>
</form>
</body>
我认为应该对每个复选框元素使用for循环,并
this
来指定每个单独的克隆,但我不知道在哪里或如何做到这一点。请帮忙 我假设您已经知道如何获取附加所需的dom元素的引用,以及如何创建和附加元素
您是对的,您可以在数据集上循环并生成具有唯一id的dom元素,以便以后在将新值传输到输入时可以引用它们
...forEach((obj, index) => {
(produce tr dom element here)
(produce three inputs, give all unique-identifier)
oneOfThreeInputs.setAttribute('unique-identifier', index); // can set to whatever you want, really
(proceed to creating your inputs and appending them to the tr dom element)
targetInputDomElementChild.setAttribute('id', `unique-input-${index}`); // same here, doesn't have to be class
});
请注意,我正在使用模板字符串将索引编号值与其余字符串合并。从那时起,您可以引用索引以引用正确的输入,也可以在keyUp事件处理程序中使用jquery:
function keyUpEventHandler($event) {
const index = $(this).attr('unique-identifier');
const targetInput = $(`#unique-input-${index}`)
// do stuff with targetInput
}
我创建了一个提琴,向您展示使用上述信息可以选择的路线:
请注意,当您单击复选框时,在控制台中您将看到指定该复选框集的变量编号。您可以使用该特定的数字来获取需要添加到的输入,并计算值
当然,您仍然需要验证它是否被选中,以便从输入中删除。谢谢您的帮助,但您是否介意再详细说明一下。恐怕你把我弄糊涂了,因为我没能把它和我自己的剧本联系起来。我的哪一部分应该互换等等…我相信你会有很多改变。问题是,似乎您正在将keyup事件放在包装器div上,但如果您打算以“val1,val2,val3”的方式将所选输入的值添加到另一个输入中,我认为这不起作用。在我看来,您的每个输入都需要分配一个单击事件处理程序才能正常工作。用小提琴更新我的答案,让您走上正确的轨道。这很好。谢谢,但如果您取消选中某个选项,它也会附加一个值?是的,就像我说的,您只需检查复选框是选中还是未选中,而不是执行“combo”逻辑,您必须拼接出字符串的该部分,并以相同的方式分配它。
function keyUpEventHandler($event) {
const index = $(this).attr('unique-identifier');
const targetInput = $(`#unique-input-${index}`)
// do stuff with targetInput
}