首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匿名表单输入的表单提交

匿名表单输入的表单提交
EN

Stack Overflow用户
提问于 2020-06-04 09:39:44
回答 2查看 86关注 0票数 0

我试图匿名所有的表单输入,只保存1或0的数据输入,或不。为什么?这种形式是心理学研究的一部分,其中唯一感兴趣的是被访者是否输入了任何内容。

我设置了onsubmit = "anonymize()",并尝试了以下代码:

代码语言:javascript
复制
function anonymize() {

   var formFields = ["name", "age", "location"];
   formFields.forEach(loop);

   function loop(field) {
     if (field.value.length > 0) {
      document.getElementsByName(field).value = 1;
     }
 }
}

表格id/name是"name“、"age”、"location“。我试过“按ID获取”和“按名字获取”。我已经为每个表单输入字段设置了相同的名称和id。

有人知道我能怎么做才能让这件事奏效吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-04 10:46:04

您正在遍历字符串数组,而不是表单字段。

代码语言:javascript
复制
   var formFields = ["name", "age", "location"];
   formFields.forEach(loop);

   function loop(field) {
     console.log(field) // "name"
     console.log(typeof field) // "string"
     console.log(field.value) // undefined

     if (field.value.length > 0) { // Error can't read length of undefined
      document.getElementsByName(field).value = 1;
     }
   }

因此,field.value.length应该给出一个错误,因为field.value是未定义的,而且字段只是一个字符串。

下面是一种使用form.elements的解决方案,它不需要您搜索DOM元素

代码语言:javascript
复制
$form.onsubmit = function anonymize (evt) {
   const { elements } = evt.target
   ;["name", "age", "location"].forEach(name => {
     elements[name].value = elements[name].value.length ? 1 : ''
   })
}
代码语言:javascript
复制
<form id="$form" action="https://httpbin.org/post" method="POST">
  <input name="name" placeholder="Name">
  <input name="age" placeholder="Age">
  <input name="location" placeholder="Location">
  <input name="Favorite food" placeholder="Favorite food">
  <input type="submit">
</form>

票数 0
EN

Stack Overflow用户

发布于 2020-06-04 09:49:33

函数循环中的params字段是一个字符串,所以语句"field.value.length“没有意义

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62191482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档