基于jQuery实现日期自动填充并提交表单的循环脚本需求
jQuery脚本遍历日期并自动提交表单
我明白你的需求——要遍历1980到1998年的每一天,自动填充生日表单并提交,还要控制每次提交的间隔。直接用普通的for循环肯定不行,因为它会瞬间跑完所有迭代,根本等不到间隔时间。咱们得用异步递归的方式来实现,同时利用Date对象帮我们处理不同月份的天数(包括闰年的2月),避免手动计算出错。
完整实现代码
// 生成1980-1998年的所有日期数组 function generateAllDates() { const startDate = new Date(1980, 0, 1); // 月份从0开始,0代表1月 const endDate = new Date(1999, 0, 1); // 到1999年1月1日停止(不包含) const dates = []; while (startDate < endDate) { // 格式化年、月、日为两位数字(比如01、02) const year = startDate.getFullYear(); const month = String(startDate.getMonth() + 1).padStart(2, '0'); const day = String(startDate.getDate()).padStart(2, '0'); dates.push({ year, month, day }); // 日期加1天 startDate.setDate(startDate.getDate() + 1); } return dates; } // 递归处理每个日期,自动填充并提交表单 function submitDateSequentially(dates, index = 0) { // 所有日期处理完毕,退出递归 if (index >= dates.length) { console.log('所有日期已遍历完成!'); return; } const { year, month, day } = dates[index]; // 填充表单(注意jQuery的val()方法,你原来的.value是原生JS写法,jQuery要用.val()) $('input[name="year"]').val(year); $('select[name="month"]').val(month); $('input[name="day"]').val(day); console.log(`正在提交日期:${year}-${month}-${day}`); // 提交表单 $('button[type="submit"]').click(); // 随机4-5秒后处理下一个日期 const delay = Math.floor(Math.random() * 1000) + 4000; // 4000ms到5000ms之间 setTimeout(() => { submitDateSequentially(dates, index + 1); }, delay); } // 启动流程 const allDates = generateAllDates(); submitDateSequentially(allDates);
关键细节说明
- 日期生成逻辑:用Date对象自动处理每个月的天数,包括闰年的2月29日,不用手动判断每个月有多少天,避免出错。
- jQuery方法修正:你原来的代码用了
.value,这是原生JavaScript的属性,jQuery里应该用.val()来设置表单值,不然会失效。 - 异步间隔控制:用
setTimeout和递归函数来实现逐个日期的延迟提交,随机4-5秒的间隔是为了模拟人工操作,避免被网站判定为机器人。 - 进度追踪:控制台会打印当前提交的日期,方便你查看进度。
注意事项
- 如果表单提交后页面会刷新,这个脚本会中断,因为页面刷新后所有JS变量都会重置。这种情况下,你可以用
localStorage保存当前处理到的索引,页面加载时从保存的位置继续:// 修改启动流程部分 let startIndex = parseInt(localStorage.getItem('currentDateIndex')) || 0; const allDates = generateAllDates(); submitDateSequentially(allDates, startIndex); // 在submitDateSequentially函数里,每次处理前保存索引 localStorage.setItem('currentDateIndex', index); - 请确保这是用于测试你自己的账号,不要用于其他未经授权的场景,遵守网站的使用规则。
内容的提问来源于stack exchange,提问作者Martyna
相关产品推荐
相关产品推荐

