javascript onsubmit 更改字段值

Posted

技术标签:

【中文标题】javascript onsubmit 更改字段值【英文标题】:javascript onsubmit change field value 【发布时间】:2014-05-22 11:56:49 【问题描述】:

我正在编写一个包含 content_script 的 javascript chrome 扩展:

读取用户提交的数据 在需要时修改用户数据 删除用户可能已插入的前缀“myprefix:”并 提交修改后的文本。

我已经编写了一些成功更新所需值的代码(我可以看到输入字段值在提交时被更改,就在浏览器离开页面之前)。但是,有时会提交未修改的值(删除前缀之前的值),并且这种情况会间歇性地发生。

到目前为止,我有这个代码:

document.addEventListener('DOMContentLoaded', function () 
    onsubmitModifier();


function onsubmitModifier()  
    for (var i = 0; i < document.forms.length; i++) 
        document.forms[i].addEventListener("submit", function () 
            var elementList = document.getElementsByTagName("INPUT");
            for (var i = 0; i < elementList.length; i++) 
                if (elementList[i].value.toLowerCase().startsWith("myprefix:")) 
                    // data modification is removed for testing
                    elementList[i].value = elementList[i].value.substring("myprefix:".length);
                
            
        
    

【问题讨论】:

您是否错过了DOMContentLoaded 活动? 你说它“间歇性地”发生:它发生的情况有什么规律吗? 是否可以DOMContentLoaded987654323@之后动态添加表单? @Xan,我猜测如果在DOMContentLoaded 之后添加表单,那么我将不会收到“提交”事件,而我会收到它们(正在修改值,但提交的值并不总是修改后的值)。 这只是一个提示(我没有时间测试它):在单个表单的提交处理程序中,您正在循环页面上的 every 输入元素,即使它不是当前表单的一部分 【参考方案1】:

您可以尝试先停止默认事件,然后在 setTimeout 块中调用 form.submit()

【讨论】:

以上是关于javascript onsubmit 更改字段值的主要内容,如果未能解决你的问题,请参考以下文章

文本字段更改的值未在 OnSubmit 中更新 - React-Hook-Form 和 React Js

为啥我不能使用 onsubmit 来更改 innerHTML?

Javascript按名称更改字段值

反应钩子 useState 不使用 onSubmit 更新

html/javascript onsubmit 事件未在表单提交上调用以验证表单

javascript datepicker检测输入字段中的更改值