我知道您可以从以下表单轻松获取数据:
function getData(event) {
event.preventDefault();
const inpt = document.getElementById("inpt").value;
return inpt;
}
//OR
function getData(event) {
event.preventDefault();
const inpt = document.getElementById('form').elements[0].value;
return inpt;
}
<form id="form" onsubmit="getData(event)">
<input id="inpt" type="text"></input>
</form>
我想知道的是,是否可以通过event属性或this
关键字获得相同的值,而无需使用任何排序的"getElementBy ..."或任何querySelector。
3条答案
按热度按时间bvjveswy1#
我觉得我更喜欢詹姆斯的答案,简单多了,还没做过全面的测试,抱歉.
如果你给所有的表单元素分配一个name属性,那么在表单提交事件中,你可以使用FormData Api来获取它们的数据。我相信这在IE或其他老版本的浏览器上是行不通的(检查浏览器兼容性)。
Form Data: https://developer.mozilla.org/en-US/docs/Web/API/FormData#browser_compatibility
Object.fromEntries(): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries#browser_compatibility
这将返回对象:
dzhpxtsq2#
由于事件侦听器是在窗体上设置的,因此form元素可用作
第一个月
因此文本字段值可由
event.target.elements[0].value
表单元素在提交处理程序中也是
this
,因此您也可以this.elements[0].value
.hgb9j2n63#
您可以直接通过事件访问输入的值。例如,在函数中访问名为“input1”的输入字段的数据: