我可以通过Javascript向表单添加参数吗
Can I add a parameter to a form through Javascript?
我有一个向URL添加参数的HTML表单。我只想在以相同的形式选择某个选项时添加额外的参数。所以,假设我想在选择"Commercial"的情况下将参数"addedParameter=1"添加到URL中,否则我根本不希望参数出现(换句话说,我没有得到"House"answers"Land"的结果)请让我知道我能做什么。
<select id="pt" value="pt" name="pt" onChange="addParameter()">
<option value="" name="">Select</option>
<option value="1" name="1">House</option>
<option value="2" name="2">Commercial</option>
<option value="3" name="3">Land</option>
</select>
<input type="hidden" id="add" name="" value="1">
function addParameter(){
if(pt.selectedIndex == 1)
document.getElementById("add").name = "addedParameter";
}
我建议,与其根据条件添加/删除元素,不如使用disabled
属性(只有非disabled
元素才被视为"成功",因此只有非disabled
元素才会提交其名称/值):
function addParameter () {
var sel = document.getElementById('pt'),
input = document.getElementById('add');
input.disabled = sel.selectedIndex != 2;
}
document.getElementById('pt').onchange = addParameter;
JS Fiddle演示。
注意,在演示中,我删除了type="hidden"
属性值,以便直观地演示效果,但这不是这种方法所必需的。此外,条件input
具有默认设置的disabled="disabled"
属性(因此,如果在select
受到用户影响之前提交表单,则不会意外提交)。
使用jQuery可以做得更清楚。当html定义还不够时,我更喜欢通过动态javascript创建和删除(输入)节点。您讨论的两种方式(通过选择事件或添加提交事件处理程序进行更改)也适用于此:
function addParameter() {
if ($('#pt').val() == "2") $('<input/>', { id: 'id_optionalParam', name: 'optionalParam', value: '1234', type: 'hidden' }).appendTo('#TheForm');
else $('#id_optionalParam').remove();
}
<input type="hidden" id="add" name="addedParameter" value="1">
function addParameter(){
if(pt.selectedIndex != 1)
input = document.getElementById("add")
parent = input.parentNode
parent.removeChild(input)
}
当additionalParameter未设置时,这将删除输入,否则它不会被更改。
编辑:替代解决方案:
function addParameter(){
if(pt.selectedIndex == 1) {
document.getElementById("add").name = "addedParameter";
} else {
document.getElementById("add").name = "";
}
}
另请参阅removeChild 的文档
我认为在这种情况下,最好的方法是在表单的submit事件上附加一个事件处理程序。根据需要执行操作,然后提交表单。在html中添加输入并在之后删除它并不是那么灵活。
<script>
window.onload = function() {
var form = document.getElementById("theform"),
select = document.getElementById("pt");
form.addEventListener("submit", function(event) {
event.preventDefault();
if(select.value == 2) {
var element = document.createElement("INPUT");
element.setAttribute("type", "hidden");
element.setAttribute("name", "addedParameter");
element.setAttribute("value", "1");
form.appendChild(element);
}
form.submit();
});
}
</script>
<form method="get" id="theform">
<select id="pt" value="pt" name="pt" onChange="addParameter()">
<option value="" name="">Select</option>
<option value="1" name="1">House</option>
<option value="2" name="2">Commercial</option>
<option value="3" name="3">Land</option>
</select>
<input type="submit" />
</form>
当选择所需选项时,您可以通过为表单添加额外的fidden字段来添加额外的参数,否则将其删除:
function addParameter(){
var addedParameterField = document.getElementById("addedParameter");
if (pt.selectedIndex != 1) {
if (addedParameterField) {
addedParameterField.parentNode.removeChild(addedParameterField);
}
} else {
if (!addedParameterField) {
var addedParameterField = document.createElement("input");
addedParameterField.type = "hidden";
addedParameterField.name = "addedParameter";
addedParameterField.value = "1";
container = document.getElementById('myform');
container.appendChild(addedParameterField);
}
}
}
相关文章:
- 如何向这个javascript/jquery函数添加参数
- 如何在所有ajax调用中向URL添加参数
- 在Javascript中向回调添加参数
- javascript窗口打开并添加参数
- 无法在 JavaScript 函数中添加参数
- 向jQueryajax调用添加参数,最好添加到URL或对象中
- 使用JavaScript向链接添加参数
- 正在向传递的回调添加参数
- 循环遍历数组,并在javascript中向sql查询添加参数
- 向回调添加参数
- 通过随机 url 重定向传递和添加参数
- 如何使用变量向对象添加参数
- 为什么添加参数时停止功能
- 向网址添加参数 - 因现有参数而异
- 当函数绑定在构造函数中时,如何在 ES6 React 中向事件处理程序添加参数
- 使用 JavaScript 或 jQuery 如何在页面加载后向 URL 添加参数
- 添加参数时调用javascript函数停止工作,这真的不大声吗
- 余烬数据不会向后置请求添加参数
- 如何在函数调用中自动添加参数
- 为什么可以在 JavaScript 中添加参数类型和返回类型