[编辑] 经过大量的查找,我发现问题出在如何将 CKEditor 集成到我的页面上。如已接受的答案所述,简单明了的方式确实在这种情况下起作用。
你好,
我需要在提交按钮被按下后,但实际提交之前更改表单的值。
我尝试钩入表单的“submit”事件,并在那里手动更改文本字段的值,但似乎这并不会实际更改提交的值。
有什么想法吗?
[编辑] 经过大量的查找,我发现问题出在如何将 CKEditor 集成到我的页面上。如已接受的答案所述,简单明了的方式确实在这种情况下起作用。
你好,
我需要在提交按钮被按下后,但实际提交之前更改表单的值。
我尝试钩入表单的“submit”事件,并在那里手动更改文本字段的值,但似乎这并不会实际更改提交的值。
有什么想法吗?
我对你所说的提交处理程序submit
没有起作用感到好奇。对我来说它是有效的。多年来,我一直使用它在发送表单之前填充隐藏字段; 它也应该适用于其他表单字段。
示例(现场演示):
HTML:
<form id='theForm'
action='http://www.google.com/search'
method='GET' target='_new'>
<label>Search for:
<input type='text' name='q' id='txtSearch'></label>
<input type='submit' id='btnSearch' value='Search'>
JavaScript:
window.onload = function() {
document.getElementById('theForm').onsubmit = function() {
var txt = document.getElementById('txtSearch');
txt.value = "updated " + txt.value;
};
};
已在Windows上的IE6和IE7以及Linux上的Chrome、Firefox和Opera进行测试并正常工作。
更新:根据您下面的评论,您正在使用jQuery。在使用jQuery进行一切操作时也可以正常工作:
$('#theForm').submit(function() {
var txt = $('#txtSearch');
txt.val("updated " + txt.val());
});
$('.txtSearch').val(newval)
)。将其更改为以下内容解决了问题:$(".txtSearch")[0].value = newval
。您有什么想法这其中的区别是什么吗? - Editorman$('form').submit(function(e) {
e.preventDefault();
// do your processing
this.submit(); // call the submit function on the element rather than
// the jQuery selection to avoid an infinite loop
});
this.submit();
而不是$(this).submit();
)。 - T.J. Crowder您可以使用formData
事件。
formdata
事件在表示表单数据的条目列表构建完成后触发。这发生在提交表单时,但也可以通过调用FormData()
构造函数来触发。
formElem.addEventListener('formdata', (e) => {
const formData = e.formData;
//no need change document.getElementById().value = "";
formData.set('field1', 'foo');
formData.set('field2', 'bar');
//updated formData
});
你尝试在提交按钮上添加点击JavaScript事件并更改值了吗?这可能会起作用,因为客户端脚本将首先执行。