You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于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秒的间隔是为了模拟人工操作,避免被网站判定为机器人。
  • 进度追踪:控制台会打印当前提交的日期,方便你查看进度。

注意事项

  1. 如果表单提交后页面会刷新,这个脚本会中断,因为页面刷新后所有JS变量都会重置。这种情况下,你可以用localStorage保存当前处理到的索引,页面加载时从保存的位置继续:
    // 修改启动流程部分
    let startIndex = parseInt(localStorage.getItem('currentDateIndex')) || 0;
    const allDates = generateAllDates();
    submitDateSequentially(allDates, startIndex);
    
    // 在submitDateSequentially函数里,每次处理前保存索引
    localStorage.setItem('currentDateIndex', index);
    
  2. 请确保这是用于测试你自己的账号,不要用于其他未经授权的场景,遵守网站的使用规则。

内容的提问来源于stack exchange,提问作者Martyna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:11:04