提交按钮在其属性更改后不会 post
submit button does not post when its attributes were changed
我正在使用表单和其中的提交按钮调用 post 请求到 html
中的服务器
在提交按钮中,我在 posting 请求之前使用 onclick 事件更改 UI 中的内容。当我不对提交按钮进行任何更改时,一切都很好,它 posts 请求成功。
但是,如果我更改提交按钮中的任何内容,例如值、禁用属性...,那么它不会 post 请求
这是我的代码
<form action="url"method="post">
<input type="submit" onclick="return onClick(event)">
</form>
不post请求的js代码
function onClick(e) {
const submit = e.target // or = this
submit.value = "Clicked"
submit.disabled = true
return true
}
post请求成功的js代码
function onClick(e) {
alert("Clicked")
return true
}
有人能告诉我它没有 post 成功的原因以及如何 post 和 UI 像上面那样改变吗?
表单是发送 POST 还是 GET 请求取决于其 method
属性。尝试将您的表单更改为
<form action="url" method="post">
<input type="submit" onclick="return onClick(event)">
</form>
您需要使用submit
方法来获得结果。
-> 将 id
分配给按钮和表单元素,然后获取类似
的元素
const btn = document.getElementById('btn');
const form = document.getElementById('form');
始终建议在 javascript 中使用 addEventListener() 方法,而不是在 HTML 模板中使用。
form.addEventListener('submit', onSubmit)
-> 现在您可以在提交方法中更改属性值,例如,
function onSubmit(){
btn.value = "Clicked";
btn.disabled = true;
return true
}
工作片段如下,
const btn = document.getElementById('btn');
const form = document.getElementById('form');
function onSubmit(){
btn.value = "Clicked";
btn.disabled = true;
return true
}
form.addEventListener('submit', onSubmit)
<form id="form" action="url" method="post">
<input type="submit" id="btn">
</form>
我自己找到的另一个解决方案,非常感谢@Maniraj Murugan 在上面提供的帮助:改为使用 input type="button",并在 onclick 事件中使用 form.submit()手动提交
<form action="url"method="post">
<input type="button" onclick="return onClick(event)">
</form>
并在 onClick 事件中
function onSubmit(e){
const btn = e.target
btn.value = "Clicked"
btn.disabled = true
const form = document.getElementById('form')
form.submit()
}
我正在使用表单和其中的提交按钮调用 post 请求到 html
中的服务器在提交按钮中,我在 posting 请求之前使用 onclick 事件更改 UI 中的内容。当我不对提交按钮进行任何更改时,一切都很好,它 posts 请求成功。 但是,如果我更改提交按钮中的任何内容,例如值、禁用属性...,那么它不会 post 请求
这是我的代码
<form action="url"method="post">
<input type="submit" onclick="return onClick(event)">
</form>
不post请求的js代码
function onClick(e) {
const submit = e.target // or = this
submit.value = "Clicked"
submit.disabled = true
return true
}
post请求成功的js代码
function onClick(e) {
alert("Clicked")
return true
}
有人能告诉我它没有 post 成功的原因以及如何 post 和 UI 像上面那样改变吗?
表单是发送 POST 还是 GET 请求取决于其 method
属性。尝试将您的表单更改为
<form action="url" method="post">
<input type="submit" onclick="return onClick(event)">
</form>
您需要使用submit
方法来获得结果。
-> 将 id
分配给按钮和表单元素,然后获取类似
const btn = document.getElementById('btn');
const form = document.getElementById('form');
始终建议在 javascript 中使用 addEventListener() 方法,而不是在 HTML 模板中使用。
form.addEventListener('submit', onSubmit)
-> 现在您可以在提交方法中更改属性值,例如,
function onSubmit(){
btn.value = "Clicked";
btn.disabled = true;
return true
}
工作片段如下,
const btn = document.getElementById('btn');
const form = document.getElementById('form');
function onSubmit(){
btn.value = "Clicked";
btn.disabled = true;
return true
}
form.addEventListener('submit', onSubmit)
<form id="form" action="url" method="post">
<input type="submit" id="btn">
</form>
我自己找到的另一个解决方案,非常感谢@Maniraj Murugan 在上面提供的帮助:改为使用 input type="button",并在 onclick 事件中使用 form.submit()手动提交
<form action="url"method="post">
<input type="button" onclick="return onClick(event)">
</form>
并在 onClick 事件中
function onSubmit(e){
const btn = e.target
btn.value = "Clicked"
btn.disabled = true
const form = document.getElementById('form')
form.submit()
}