javascript - Javascript html表单动态更新动作值未保存
问题描述
我有一个表单,其操作值根据用户选择的复选框进行更新。我想创建一个带有反映所选复选框的查询的 URL。
当我单击复选框时,查询字符串已正确构建,没问题。但是,当我在表单上单击提交时,它会将查询字符串转换为 admin/sites/lockers/?types=5
对admin/sites/lockers/?colonised=on&free=on
我来说是黑魔法。
为什么这样做?我希望在admin/sites/lockers/?types=5
.
谢谢你的帮助。
资源 :
// creates query string based on what was filled in form.
// GET request will be done with the options provided.
const initialPath = document.optionsForm.action;
parseValues();
function parseValues() {
let optionsArray = [];
const params = new URLSearchParams();
let n = 0;
let flag = 0;
for (let k = 1; k <= 4; k++) {
let check = document.getElementById("customCheck" + k);
if (check.checked) {
flag += Math.pow(2, (k - (n + 1)));
}
}
optionsArray.push({
name: 'types',
value: flag
})
const url = jQuery.param(optionsArray);
document['optionsForm'].action = initialPath + url;
console.log(initialPath + url);
}
<html>
<head>
<title>Test</title>
</head>
<body>
<div class="container">
<div class="jumbotron">
<form action="/admin/sites/lockers/?" method="GET" name="optionsForm">
<p class="lead">Cochez les localisations souhaitées : </p>
<p class="lead">Cochez les types de casiers souhaités : </p>
<div class="form-group">
<div class="custom-control custom-checkbox" onclick='parseValues()'>
<input type="checkbox" class="custom-control-input" id="customCheck1" checked="" name="colonised">
<label class="custom-control-label" for="customCheck2">Colonisés</label>
</div>
<div class="custom-control custom-checkbox" onclick='parseValues()'>
<input type="checkbox" class="custom-control-input" id="customCheck2" checked="" name="non-renewed">
<label class="custom-control-label" for="customCheck2">Non Renouvelés</label>
</div>
<div class="custom-control custom-checkbox" onclick='parseValues()'>
<input type="checkbox" class="custom-control-input" id="customCheck3" checked="" name="free">
<label class="custom-control-label" for="customCheck3">Libres</label>
</div>
<div class="custom-control custom-checkbox" onclick='parseValues()'>
<input type="checkbox" class="custom-control-input" id="customCheck4" checked="" name="occupied">
<label class="custom-control-label" for="customCheck4">Occupés</label>
</div>
</div>
<input type="submit" value="Confirmer" class="btn btn-primary" onclick="parseValues();">
</form>
</div>
</div>
</body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
</script>
</html>
解决方案
推荐阅读
- c++ - 为什么我从 SIMD 内在函数中获得更大的相对加速与具有更大数组的标量?
- python - Python中的列表理解解决以下问题
- reactjs - 在 React 组件中调用内联函数 - React 测试库 + Jest
- c# - dotnet core -> 返回 jpg 图像的 base64 字符串时 web api 内容类型的最佳实践
- python - 使用 HTML 中的动态 URL 和按钮发布请求 Flask
- c# - 如何从 ASP.NET 样板中的用户表中删除电子邮件和其他额外字段?
- image - 如何在 Linux 中将 PNG 转换为未压缩的 DDS?
- performance - 使用 numpy 和 GPU 将矩阵乘以跨 Tenor 轴
- r - Plotly:如何使用 add_annotations 设置箭头的样式和颜色?
- azure - 将托管数据磁盘附加到 vm