jQuery 禁用表单提交在不到 xx 秒内
jQuery disable form submit in less than xx seconds
我有一个用户注册表。我需要检查用户表单是否在不到 xx 秒(5 秒)内填写。如果少于 5 秒,请禁用表单提交。类似的东西禁用提交按钮单击或返回 false 或类似的东西。
我写了一些jquery脚本。但无法正常工作。
这是示例表单。
<form id="registerform" class="registerform" method="post"/>
<input type="text" name="username" id="username" />
<input type="text" name="email" id="email" />
<input type="submit" name="submit" id="submitBtn" value="Submit" />
</form>
这是jquery脚本。
<script type=javascript>
jQuery.noConflict();
jQuery(document).ready(function ($) {
var typingTimer; //timer identifier
var doneTypingInterval = 5000; //time in ms, 5 second for example
var checktime = 0;
jQuery('form#registerform').find(':input').each(function(){
jQuery(this).keyup(function(){
typingTimer = setTimeout(doneTyping, doneTypingInterval);
});
jQuery(this).keydown(function(){
clearTimeout(typingTimer);
});
});
function doneTyping () {
checktime = typingTimer;
return checktime;
}
jQuery('form#registerform').submit(function() {
checktime = doneTyping ();
var timerInsec = (doneTypingInterval/1000);
if(checktime < timerInsec) {
return false; // disable form submit
} else {
// if user take to fill the form more than 5 seconds, submit the form
return true;
}
});
});
</script>
我需要集成到wordpress注册表中。这就是我尝试的原因。如果有人对此有解决方案,请帮助我。真的很感激。
谢谢
这将禁用您的提交按钮 5 秒钟:
var submitButton = $('#submitBtn');
submitButton.prop("disabled", true);
setTimeout(function() {
submitButton.prop("disabled", false);
}, 5000);
在线示例
您还需要确保恶意用户不会通过其他方式提交表单!确保运行服务器端验证:
if ( isset($_SESSION['last_submit_time']) ) {
$delay = intval($_SESSION['last_submit_time']) + 5;
if ( time() < $delay ) {
$_SESSION['last_submit_time'] = time();
echo "You must wait for 5 more seconds before submitting. Timer reset.";
exit;
}
}
键入计时器不包含时间,而是包含当前正在滴答作响的计时器的 ID...而且由于 Key Up 将始终将其设置为某个值,因此它永远不会为假。此外,您还可以为每个输入添加和重置计时器。如果您希望用户至少花费 5 秒钟来填写表单,请不要启用提交按钮,直到 5 秒过去。
function doneTyping () {
checktime = typingTimer;//will always have a value that evaluates to true
return checktime;
}
试试....HTML:
<form id="registerform" class="registerform" method="post">
<input type="text" name="username" id="username">
<input type="text" name="email" id="email">
<input type="submit" name="submit" id="submit" value="Submit">
</form>
j查询:
jQuery(document).ready(function ($) {
var intervalTime = 5000,
inputID = "#submit";
function initialize(interval, input) {
intervalTime = interval;
inputID = input;
jQuery(inputID).prop("disabled", true);
startCouting();
}
function startCouting() {
setTimeout(function() {
enableInput();
}, intervalTime);
}
function enableInput() {
jQuery(inputID).prop("disabled", false);
};
initialize(5000, "#submit");
});
相关文章:
- 如果未按下该按钮,则在30秒内自动执行该功能
- 使用画布在秒内逐像素显示图片
- 我需要在每5秒内调用一个函数,并重置持续时间
- 在 n 秒内重定向并传递值
- 运行一次函数,然后在 5 秒内禁止进一步调用
- 如果有办法在 N 秒内加载未触发,则有没有办法设置 img src
- 需要在悬停时激活动作,并在7秒内返回到原始状态
- 文本幻灯片在前2秒内堆叠在一起
- 在不到2秒内按下下一次按钮时发出警报
- 如果在一段时间不活动后4秒内开始加载,如何刷新我的网站
- 使用 JavaScript 在 5 秒内更改 5 张图像
- jQuery 禁用表单提交在不到 xx 秒内
- 如果用户在 5 秒内未滚动,如何平滑滚动到定位点
- 每 XX 秒调用一次 GET API,并将 JSON 响应放入 CSV 中
- 如何在剑道网格中使用分页时在秒内获取选定的行 ID
- 在 10 秒内将 if(button.g == 1) 转换为自动运行
- 如何在JavaScript中1秒内精确执行1000次代码
- 如果之前在X秒内调用,则阻止并排队执行操作(但仅全局执行一次)
- php随机消息将在20秒内淡出到下一条随机消息
- 在javascript中使用一个函数的时间不超过2秒内1次