kate522
481f40378a
fix(payment): 修复添加卡密页「确认提交」按钮静默失效
数字输入(auto_num / auto_price / auto_rand_number_limit /
auto_rand_password_limit)此前被平铺成原生 HTML5 约束属性
(min/max/step),叠加两个问题后表现为按钮点了毫无反应:
1) 数值彼此不自洽:参考主题 CSF spinner 的 default=20 / min=1 /
step=10 合法格点是 1,11,21…,默认值 20 当场就非法;
auto_rand_number_limit 同理(默认 20、格点 1,6,11…)。
2) 这些行是条件显隐的(field_row 输出 <tr data-dep>,不满足依赖时
display:none)。提交时浏览器仍会校验隐藏控件,而隐藏控件无法聚焦
去弹提示气泡,于是 Chrome 只往控制台丢一句
"An invalid form control ... is not focusable" 便静默拒绝提交——
不跳转、不报错、无 notice,用户看到的就是按钮坏了。
处置:数字输入改用 data-min/data-max/data-step + step="any"
(与参考主题 CSF_Field_spinner::render() 语义一致),不再写任何原生
约束属性;auto_price 一并去掉 min="0",面额下限改由服务端夹取兜底
(max(0.0, ...)),避免「去掉客户端下限」变成放行负面额。
验证:
- 无头 Chrome 探针:btn.click() 触发的 submit 事件 0 → 1,
参与校验控件 23 个、无效 3 个 → 0 个;
- 服务端扫描页面 25 个 input:带原生约束的 0 个;
- 服务端面额夹取:-5 拒绝、0.001 拒绝、12.5 正常生成 1 张;
- 新增 tests/admin/charge-cards-form-constraints.test.cjs(4 例),
并做负向对照(重引入 min/step 后 2 pass / 2 fail);
- tests/admin 四个套件合计 22 pass / 0 fail。
2026-09-17 13:19:05 +08:00
..
2026-09-17 13:19:05 +08:00
2026-09-16 17:23:56 +08:00
2026-08-17 21:47:40 +08:00
2026-09-06 10:47:24 +08:00
2026-09-05 20:48:18 +08:00
2026-08-18 16:06:47 +08:00
2026-09-16 19:18:28 +08:00