javascript - 如何将表单数据放入javascript中的对象中?
问题描述
我只希望我的表单在将其提交到后端时返回一个联系人对象。在检查输入后,我尝试这样做。
这样我就可以随后在我这边发出一个包含联系人对象的 JSON 请求。我的项目规范:返回联系人对象谢谢您的帮助。我是 JavaScript 新手!
<form action="" method="post" class="row gy-4" id="formContact">
<div class="form-group">
<label for="firstName">Firstname*</label>
<input type="text" class="form-control" placeholder="" name="firstName" id="firstName" value="validFirstnameValue">
<span class="error"></span>
</div>
<div class="form-group">
<label for="lastName" class="form-label">Lastname *</label>
<input type="text" class="form-control" name="lastName" id="lastName" placeholder="" value="validelastNamevalue">
<span class="error"></span>
</div>
<div class="form-group">
<label for="email" class="form-label">Email *</label>
<input type="email" class="form-control" name="email" id="email" placeholder="mail@example.com" value="validEmailValue">
<span class="error"></span>
</div>
<div class="form-group">
<label for="address" class="form-label">Adress *</label>
<input type="text" class="form-control" name="address" id="address" placeholder="" value="validAdressValue">
<span class="error"></span>
</div>
<div class="form-group">
<label for="city" class="form-label">City *</label>
<input type="text" class="form-control" id="city" name="city" placeholder="" value="validCityValue">
<span class="error"></span>
</div>
<div class=" form-group my-4 text-center ">
<button class="btn btnSubmit fw-bold btn-secondary" id="submitButton" type="submit" value="envoyer">Commander</button>
</div>
</form>
let formContact = document.querySelector('#formContact');
let inputFirstname = document.querySelector('#firstName');
let inputLastname = document.querySelector('#lastName');
let inputEmail = document.querySelector('#email');
let inputAddress = document.querySelector('#address');
let inputCity = document.querySelector('#city');
const regexName = /^[a-zA-Z-\s]+$/;
const regexMail = new RegExp('^[a-zA-Z0-9.-_]+[@]{1}[a-zA-Z0-9.-_]+[.]{1}[a-z]{2,10}$');
const regexNumber = /^[0-9]{5}$/;
const regexAdress = /^(([a-zA-ZÀ-ÿ0-9]+[\s\-]{1}[a-zA-ZÀ-ÿ0-9]+)){1,20}$/;
document.querySelector('#formContact').addEventListener('change', function (e) {
e.preventDefault();
const borderCode = " #7EEA5E solid 2px";
switch (e.target.id) {
//TEST FIRSTNAME //
case 'firstName':
if (regexName.test(inputFirstname.value)) {
error = false;
} else {
error = true;
}
break;
// TEST LASTNAME //
case 'lastName':
if (regexName.test(inputLastname.value)) {
error = false;
} else {
error = true;
}
break;
// TEST EMAIL //
case 'email':
if (regexMail.test(inputEmail.value)) {
error = false;
} else {
error = true;
}
break;
// TEST ADDRESS //
case 'address':
if (regexAdress.test(inputAddress.value)) {
error = false;
} else {
error = true;
}
break;
// TEST CITY //
case 'city':
if (regexName.test(inputCity.value)) {
error = false;
} else {
error = true;
}
break;
}
if (!error) {
e.target.style.border = borderCode;
}
});
document.querySelector('#submitButton').addEventListener('click', function (e) {
if (error) {
e.preventDefault();
alert('Check');
}
});
let contact = {
firstName: '',
lastName: '',
email: '',
address: '',
city: '',
}
解决方案
有基于您的代码的粗略工作示例
// get elements
const formEl = document.getElementById('formContact');
const firstEl = document.getElementById('firstName');
const lastEl = document.getElementById('lastName');
const emailEl = document.getElementById('email');
const addressEl = document.getElementById('address');
const cityEl = document.getElementById('city');
const submitEl = document.getElementById('submitButton');
// regex
const regexName = /^[a-zA-Z-\s]+$/;
const regexMail = new RegExp('^[a-zA-Z0-9.-_]+[@]{1}[a-zA-Z0-9.-_]+[.]{1}[a-z]{2,10}$');
const regexNumber = /^[0-9]{5}$/;
const regexAdress = /^(([a-zA-ZÀ-ÿ0-9]+[\s\-]{1}[a-zA-ZÀ-ÿ0-9]+)){1,20}$/;
let error = false;
document.querySelector('#formContact').addEventListener('input', e => {
e.preventDefault();
const borderSuccess = " #7EEA5E solid 2px";
const borderError = 'red solid 2px';
switch (e.target.id) {
//TEST FIRSTNAME //
case 'firstName':
if (regexName.test(firstEl.value)) {
error = false;
e.target.style.border = borderSuccess;
} else {
error = true;
e.target.style.border = borderError;
}
break;
// TEST LASTNAME //
case 'lastName':
if (regexName.test(lastEl.value)) {
error = false;
e.target.style.border = borderSuccess;
} else {
error = true;
e.target.style.border = borderError;
}
break;
// TEST EMAIL //
case 'email':
if (regexMail.test(emailEl.value)) {
error = false;
e.target.style.border = borderSuccess;
} else {
error = true;
e.target.style.border = borderError;
}
break;
// TEST ADDRESS //
case 'address':
if (regexAdress.test(addressEl.value)) {
error = false;
e.target.style.border = borderSuccess;
} else {
error = true;
e.target.style.border = borderError;
}
break;
// TEST CITY //
case 'city':
if (regexName.test(cityEl.value)) {
error = false;
e.target.style.border = borderSuccess;
} else {
error = true;
e.target.style.border = borderError;
}
break;
}
});
formEl.onsubmit = e => {
e.preventDefault();
if (error) {
alert('Check');
return;
}
let contact = {
firstName: firstEl.value,
lastName: lastEl.value,
email: emailEl.value,
address: addressEl.value,
city: cityEl.value
};
console.log(contact);
};
input:focus {
outline: none;
}
<form action="" method="post" class="row gy-4" id="formContact">
<div class=" form-group">
<label for="firstName">Firstname*</label>
<input type="text" class="form-control" placeholder="" name="firstName" id="firstName" value="John">
<span class="error"></span>
</div>
<div class="form-group">
<label for="lastName" class="form-label">Lastname *</label>
<input type="text" class="form-control" name="lastName" id="lastName" placeholder="" value="Smith">
<span class="error"></span>
</div>
<div class="form-group">
<label for="email" class="form-label">Email *</label>
<input type="email" class="form-control" name="email" id="email" placeholder="mail@example.com" value="john@smith.com">
<span class="error"></span>
</div>
<div class="form-group">
<label for="address" class="form-label">Adress *</label>
<input type="text" class="form-control" name="address" id="address" placeholder="" value="Holy Mary street">
<span class="error"></span>
</div>
<div class="form-group">
<label for="city" class="form-label">City *</label>
<input type="text" class="form-control" id="city" name="city" placeholder="" value="New York">
<span class="error"></span>
</div>
<div class=" form-group my-4 text-center ">
<button class="btn btnSubmit fw-bold btn-secondary" id="submitButton" type="submit" value="envoyer">Commander</button>
</div>
</form>
推荐阅读
- javascript - 后端(PHP)如何在 ajax 调用上强制重定向?
- html - 如何在按钮中定位文本?
- javascript - 如何在 JavaScript 中实现变量运算符?
- docker - 通过“docker save”从图像创建的 docker 容器中缺少文件
- javascript - 带有谷歌图表的导航轴
- python-3.x - 我的 Selenium Webdriver 脚本返回一个我不理解的错误
- ruby-on-rails - 嵌套 if 语句 ruby on rails 抛出错误
- python - 将 csv 文件的行写入另一个 csv 文件
- python-3.x - 我无法弄清楚的类变量中的静态方法之谜
- javascript - Discord.js TypeError:预期图像或画布