📅  最后修改于: 2023-12-03 14:43:30.324000             🧑  作者: Mango
在网页开发中,表单是非常常见的,例如登录表单、注册表单、搜索表单等。在用户填写表单后,我们通常需要从表单中获取到用户输入的数据,以便后续的处理和使用。本篇文章将介绍如何使用 JavaScript 从表单中获取数据。
输入型表单元素包括:文本框(input type="text")、密码框(input type="password")、多行文本框(textarea)和下拉框(select)等。
我们可以使用 document.getElementById()
方法获取到对应的元素,然后通过 value
属性获取其值。例如:
<input type="text" id="username">
let username = document.getElementById("username").value;
多行文本框同样可以通过 document.getElementById()
方法获取到对应的元素,然后通过 value
属性获取其值。例如:
<textarea id="content"></textarea>
let content = document.getElementById("content").value;
下拉框的获取稍微有一些不同,需要通过 selectedIndex
属性获取到选中项的索引,再通过 options
属性获取到对应的选项。例如:
<select id="fruit">
<option value="apple">苹果</option>
<option value="banana">香蕉</option>
<option value="orange">橙子</option>
</select>
let fruit = document.getElementById("fruit");
let selectedIndex = fruit.selectedIndex;
let selectedValue = fruit.options[selectedIndex].value;
选择型表单元素包括:单选框(input type="radio")、复选框(input type="checkbox")等。
单选框需要首先获取到选择框的 name
属性,然后通过 document.getElementsByName()
方法获取到相同名称的元素,再通过循环判断选中的元素。例如:
<input type="radio" name="gender" value="male">男
<input type="radio" name="gender" value="female">女
let genders = document.getElementsByName("gender");
for (let i = 0; i < genders.length; i++) {
if (genders[i].checked) {
let gender = genders[i].value;
}
}
复选框同样也需要获取到选中元素的名称和值。由于复选框可以多选,所以需要使用数组来存储选中的值。例如:
<input type="checkbox" name="fruit" value="apple">苹果
<input type="checkbox" name="fruit" value="banana">香蕉
<input type="checkbox" name="fruit" value="orange">橙子
let fruits = document.getElementsByName("fruit");
let selectedFruits = [];
for (let i = 0; i < fruits.length; i++) {
if (fruits[i].checked) {
selectedFruits.push(fruits[i].value);
}
}
在获取到表单数据后,我们可以将其提交给服务器进行处理。表单提交通常需要使用 form.submit()
方法,例如:
<form id="myForm" action="http://localhost:8080/" method="post">
<!-- 表单元素 -->
<input type="submit" value="提交">
</form>
let myForm = document.getElementById("myForm");
myForm.submit();
以上就是从表单中获取数据的方法,使用 JavaScript 可以方便地获取表单数据,便于后续的处理和使用。下面是一个完整的表单获取数据的代码示例:
<form id="myForm" action="http://localhost:8080/" method="post">
<label for="username">用户名:</label>
<input type="text" id="username" name="username"><br>
<label for="password">密码:</label>
<input type="password" id="password" name="password"><br>
<label for="content">内容:</label>
<textarea id="content" name="content"></textarea><br>
<label for="fruit">水果:</label>
<select id="fruit" name="fruit">
<option value="apple">苹果</option>
<option value="banana">香蕉</option>
<option value="orange">橙子</option>
</select><br>
<label>性别:</label>
<input type="radio" name="gender" value="male">男
<input type="radio" name="gender" value="female">女<br>
<label>水果:</label>
<input type="checkbox" name="fruit" value="apple">苹果
<input type="checkbox" name="fruit" value="banana">香蕉
<input type="checkbox" name="fruit" value="orange">橙子<br>
<input type="submit" value="提交">
</form>
<script>
let myForm = document.getElementById("myForm");
myForm.addEventListener("submit", function(event) {
event.preventDefault();
let username = document.getElementById("username").value;
let password = document.getElementById("password").value;
let content = document.getElementById("content").value;
let fruit = document.getElementById("fruit");
let selectedIndex = fruit.selectedIndex;
let selectedFruit = fruit.options[selectedIndex].value;
let genders = document.getElementsByName("gender");
let selectedGender;
for (let i = 0; i < genders.length; i++) {
if (genders[i].checked) {
selectedGender = genders[i].value;
}
}
let fruits = document.getElementsByName("fruit");
let selectedFruits = [];
for (let i = 0; i < fruits.length; i++) {
if (fruits[i].checked) {
selectedFruits.push(fruits[i].value);
}
}
// TODO 将表单数据提交到服务器
console.log("用户名:" + username);
console.log("密码:" + password);
console.log("内容:" + content);
console.log("选择的水果:" + selectedFruit);
console.log("选择的性别:" + selectedGender);
console.log("选择的水果:" + selectedFruits);
});
</script>