[英]Run function after submitting form
我有一个 HTML 表单,这个表单是通过 JavaScript 函数提交的。 我想在提交表单时禁用该字段。 我试过这个,但我不会工作。
<html>
<body>
<form id="my_form" method="GET">
<div class="naam-speeltijd-timer">
<div class="naam-overigetijd">
<div class="settime">
<div class="tekst">selecteer het aantal minuten:</div>
<div class="inputfield"><input type="time" name="usr_time" id="usr_time" />
</div>
</div>
</div>
<div class="settime-activeerbutton">
<div class="submit">
<a href="javascript:postform()" class="button blue"><div class="light">
</div>start timer</a>
</div>
</div>
</div>
</form>
<script type="text/javascript">
function postform( )
{
document.getElementById("usr_time").disabled = true;
document.getElementById('my_form').submit() ;
};
</script>
</body>
</html>
您可以使用AJAX正确提交表单并保留禁用的输入,而无需刷新页面。 这样,您的页面将不会刷新,并且在AJAX成功后您将看到禁用的输入。 尝试这个:
$('.blue').on('click', function(e) { e.preventDefault(); var usr_time = document.getElementById("usr_time"); var usr_time_value = document.getElementById("usr_time").value; $.ajax({ type: 'get', url: 'your_serverside_script_url', data: { usr_time_value: usr_time_value }, success: function(response_from_serverside_script) { usr_time.disabled = true; } }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form id="my_form" method="GET"> <div class="naam-speeltijd-timer"> <div class="naam-overigetijd"> <div class="settime"> <div class="tekst">selecteer het aantal minuten:</div> <div class="inputfield"> <input type="time" name="usr_time" id="usr_time" /> </div> </div> </div> <div class="settime-activeerbutton"> <div class="submit"> <a href="#" class="button blue"> <div class="light"> </div>start timer</a> </div> </div> </div> </form>
如果即使在刷新页面后仍需要禁用输入,则需要使用localStorage或cookie ,或处理服务器端的所有内容。
该字段实际上是被停用的,但是在提交表单时,页面会重新加载并返回其初始状态,即该字段被激活。
为简单起见,您可以像建议的其他答案一样使用 ajax。 但如果它不是一个选项,您将需要一个标志来指示在加载页面时是否应禁用该字段。 还有一个按钮来重置这个标志。
像这样:
...
<button onClick="reset()">RESET</button>
<script type="text/javascript">
if(localStorage.disabled){
document.getElementById("usr_time").disabled = true;
}
function reset(){
document.getElementById("usr_time").disabled = false;
localStorage.removeItem('disabled');
}
function postform(){
document.getElementById("usr_time").disabled = true;
localStorage.disabled=true;
document.getElementById('my_form').submit() ;
};
</script>
...
功能示例:
你不能使用 onclick 而不是 href 像这样的:
<html>
<body>
<form id="my_form" method="GET">
<div class="naam-speeltijd-timer">
<div class="naam-overigetijd">
<div class="settime">
<div class="tekst">selecteer het aantal minuten:</div>
<div class="inputfield"><input type="time" name="usr_time" id="usr_time" />
</div>
</div>
</div>
<div class="settime-activeerbutton">
<div class="submit">
<a href="#" onclick="postform(this);" class="button blue"><div class="light">
</div>start timer</a>
</div>
</div>
</div>
</form>
<script type="text/javascript">
function postform(link)
{
alert("click");
link.onclick = function(event)
{
event.preventDefault();
}
document.getElementById('my_form').submit() ;
};
</script>
</body>
</html>
使用 AJAX 请求执行此操作。 否则,输入字段会被禁用,但页面会在之后重新加载,因此您看不到该字段被禁用。
function postform() {
$.ajax({
type: 'GET',
url: 'pageThatProcessesTheRequest.php', // does not have to be .php, can be whatever you use to process the data
data: $("#usr_time").val()
}).done(function () {
$("#usr_time").prop("disabled", "true");
});
}
另外,一定要包含 jQuery
<script src="jquery.js"></script>
或类似的东西
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.