重力表单使用 JS 计算列表中的行并返回字段?



我正在尝试在重力表单中制作一个使用列表字段的注册表单,以便可以一次注册多个人。 问题是我还需要获得注册人数的数量,以便我可以为每个人收取费用。

使用 JS,我将如何计算列表中的行数并将值传递给另一个字段? 还是有更好的方法可以做到这一点?

更新:

根据黑曜石时代的回答,这会偶尔刷新并输出到数量字段:

function updateQty() {
var rows = document.querySelectorAll('.gfield_list_group').length; // Count rows
var qty = document.querySelector('.ginput_quantity'); // Define output location
qty.value = rows; // Put row count in location
setTimeout(updateQty, 2000); // Repeat every 2 seconds
}
updateQty(); // Execute

我不熟悉特定插件的输出标记,但您可以使用类似.querySelectorAll()的东西简单地抓取所有需要的元素。从这里开始,通过简单地查询它们的数量来查找它们的数量是微不足道的.length.如果将此数字分配给变量,则可以稍后在将其插入回其他字段时引用它 - 这可以通过使用变量更新元素的.innerHTML来完成。

这可以从下面看出:

const amount = document.querySelectorAll('.row').length;
const output = document.querySelector('.output');
output.innerHTML = amount;
<div class="row">One</div>
<div class="row">Two</div>
<div class="row">Three</div>
<div class="row">Four</div>
<br />
<div class="output"></div>

<script>
jQuery.expr[':'].hasValue = function(el, index, match) {
return el.value != "";
};

function updateQty() {
var listFieldID = '#field_85_12 .gfield_list_12_cell1 input:hasValue';
var totalFieldID = '#input_85_35';

var totalRows = $(listFieldID).length; // Count rows
var totalField = $(totalFieldID);
console.log(totalRows); // For testing
$( totalField ).val( totalRows +1 ).change();
setTimeout(updateQty, 3000); // Repeat every 2 seconds
}
updateQty(); // Execute 
</script>

相关内容

  • 没有找到相关文章

最新更新