fix(payment): 依赖求值改按 name 属性匹配,避免选择器异常静默失效

- formVal 不再把字段名拼进 CSS 选择器:vip_exchange[time] 等含方括号的名称会令选择器抛异常并被 try/catch 吞掉,导致依赖行永久停在初始状态
- 改为 fieldsByName 按 getAttribute('name') 逐元素匹配,radio 选中态也在同一集合内判断
- evalDeps 作用域收窄为 .aksrt-cardpass-form tr[data-dep],避免误命中页面上其他表格的依赖行
This commit is contained in:
kate522 committed 2026-09-16 23:03:56 +08:00
1 parent cb84c88792
commit 282a12a90b
1 file changed
+17 -4
+17 -4
View File
@@ -1043,18 +1043,31 @@ class PayChargeCards {
</style> </style>
<script> <script>
(function () { (function () {
// 按 name 属性逐元素匹配,避免把字段名拼进 CSS 选择器:
// 含方括号的字段名(如 vip_exchange[time])会让选择器抛异常并被 catch 吞掉,
// 从而把依赖行永久留在初始状态。
function fieldsByName(key) {
var all = document.querySelectorAll('.aksrt-cardpass-form [name]');
var out = [];
for (var i = 0; i < all.length; i++) {
if (all[i].getAttribute('name') === key) out.push(all[i]);
}
return out;
}
function formVal(key) { function formVal(key) {
var els = document.querySelectorAll('[name="' + key + '"]'); var els = fieldsByName(key);
if (!els.length) return ''; if (!els.length) return '';
if (els[0].type === 'radio') { if (els[0].type === 'radio') {
var c = document.querySelector('[name="' + key + '"]:checked'); for (var i = 0; i < els.length; i++) {
return c ? c.value : ''; if (els[i].checked) return els[i].value;
}
return '';
} }
if (els[0].type === 'checkbox') return els[0].checked ? '1' : ''; if (els[0].type === 'checkbox') return els[0].checked ? '1' : '';
return els[0].value; return els[0].value;
} }
function evalDeps() { function evalDeps() {
document.querySelectorAll('tr[data-dep]').forEach(function (tr) { document.querySelectorAll('.aksrt-cardpass-form tr[data-dep]').forEach(function (tr) {
try { try {
var deps = JSON.parse(tr.getAttribute('data-dep')); var deps = JSON.parse(tr.getAttribute('data-dep'));
var show = deps.every(function (d) { var show = deps.every(function (d) {