您可以从javascript的event属性或“this”关键字访问HTML表单数据吗?

edqdpe6u  于 2022-12-25  发布在  Java
关注(0)|答案(3)|浏览(120)

我知道您可以从以下表单轻松获取数据:

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。

bvjveswy

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

<form id="form" onsubmit="getData()">
      <input name="input1" id="inpt" type="text"></input>
      <input name="input2" id="NotNeededForThis" type="text"></input>
</form>
function getData(event) {
        event.preventDefault();
        const formData = new FormData(event.target);
        const formObject = Object.fromEntries(data.entries());
        return formObject;
}

这将返回对象:

{
    input1: "whatever the value was",
    input2: "whatever the value was"
}
dzhpxtsq

dzhpxtsq2#

由于事件侦听器是在窗体上设置的,因此form元素可用作
第一个月
因此文本字段值可由
event.target.elements[0].value
表单元素在提交处理程序中也是this,因此您也可以
this.elements[0].value.

hgb9j2n6

hgb9j2n63#

您可以直接通过事件访问输入的值。例如,在函数中访问名为“input1”的输入字段的数据:

function getData(event){
     //format event.target.nameOfInput.value
     //for the input field with the name input1
     let inp1 = event.target.input1.value;
     //for the input field with the name input2
     let inp2 = event.target.input2.value;
     //
     console.log( inp1 , inp2)
}

相关问题