如何在Formstack表单只读字段中预填Epoch时间戳(无全局JS权限)
解决方案
- 你之前用的
FF_OnBeforeRender回调函数在Formstack基础版里大概率不被支持,触发时机不对导致代码没执行。换用标准的DOM加载事件来确保表单元素渲染完成后再赋值更可靠。 - 另外要注意:Formstack的字段ID通常会自带
field_前缀,你预览时看到的159978255可能只是字段编号,实际DOM元素的ID应该是field_159978255,直接用数字ID会找不到元素。
修改后的代码示例:
<script type="text/javascript"> // 等待页面DOM完全加载后执行逻辑 document.addEventListener('DOMContentLoaded', function() { // 生成秒级Unix时间戳(要毫秒级直接用Date.now()即可) const timeStamp = Math.floor(Date.now() / 1000); // 替换为你实际的字段完整ID const targetField = document.getElementById('field_159978255'); if (targetField) { targetField.value = timeStamp; // 强制设置字段为只读,防止用户修改 targetField.setAttribute('readonly', true); } }); </script>
- 补充调整方案:如果Embed Code字段加载顺序靠后,表单元素可能还没渲染,可加个短延迟确保元素存在:
<script type="text/javascript"> setTimeout(function() { const timeStamp = Math.floor(Date.now() / 1000); const targetField = document.getElementById('field_159978255'); if (targetField) { targetField.value = timeStamp; targetField.setAttribute('readonly', true); } }, 500); </script>
- 关键检查点:
- 在表单预览页右键目标字段选「检查」,确认元素的
id属性完整值,必须和代码里的ID完全匹配。 - 确保Embed Code字段放在表单的靠前位置,或者延迟时间足够覆盖表单渲染时长。
- 在表单预览页右键目标字段选「检查」,确认元素的
内容的提问来源于stack exchange,提问作者Hugh Jarvis
相关产品推荐
相关产品推荐

