[英]Traversing the dom for nested objects
I have nested inputs in my html which I am trying to get the value of. 我在我试图获取其值的html中嵌套了输入。 I've tried many methods with no luck. 我已经尝试了很多方法,但是没有运气。 I want to get the value of all the inputs into different variables in my javascript file. 我想将所有输入的值转换成我的javascript文件中的不同变量。
<html lang="en">
<head>
<title>HotGym</title>
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="content-language" content="he">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
<meta http-equiv="CACHE-CONTROL" content="NO-CACHE">
<link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="css/master.css">
<link rel="stylesheet" type="text/css" href="css/addTrainee.css">
<link rel="shortcut icon" href="imgs/icon.png" type="image/x-icon">
</head>
<body>
<div class="addNav"></div>
<div class="pages">
<div class="page">
<h2 class="headline">Adding Trainee</h2>
<div class="add_trainee">
<form>
<div class="inp">
<p>Full name</p>
<input spaceholder="please enter fullname" type="text" class="fullName">
</div>
<div class="inp">
<p>Gender</p>
<input spaceholder="please enter" type="text" class="gender">
</div>
<div class="inp">
<p>Age</p>
<input require spaceholder="please enter fullname" type="number" class="age">
</div>
<div class="inp">
<p>Phone number</p>
<input spaceholder="please enter fullname" type="text" class="phoneNumber">
</div>
<div class="inp">
<p>Adress</p>
<input spaceholder="please enter fullname" type="text" class="adress">
</div>
<div class="inp">
<p>Medical assurance Date</p>
<input spaceholder="please enter fullname" type="date" class="dateMedicalAssuranceEnd">
</div>
<div class="inp">
<p>Date start memebership</p>
<input spaceholder="please enter fullname" type="date" class="dateMembershipStart">
</div>
<div class="inp">
<p>Date end memebership</p>
<input spaceholder="please enter fullname" type="date" class="dateMembershipEnd">
</div>
<div class="inp">
<input class="addTrainee" type="submit" name="submit" value="save">
</div>
</form>
</div>
<script src="jquery/dist/jquery.js"></script>
<script src="js/add-trainee-main.js" type="module"></script>
</body>
</html>
my jquery looks like this : the 'addBtn' is correct , and iv tryed many methods from here : 我的jQuery看起来像这样:'addBtn'是正确的,并且iv从这里尝试了许多方法:
handleAddTrainee() {
// console.log(this);
let addBtn = $('.addTrainee');
// console.log(addBtn)
debugger
// $('.addTrainee').on('click', () => {
// let $traineeForm = $(this).closest('.trainee-from') // need to know the way you orginized the html.
// cetch trainee data
//----
let fullName = addBtn.closest('.add_trainee').find('.inp').find('input.fullName').val();
let gender = $(this).closest('.gender').val();
let age = $(this).closest('.age').val();
let phoneNumber = $(this).closest('.phoneNumber').val();
let adress = $(this).closest('.adress').val();
let dateMedicalAssuranceEnd = $(this).closest('.dateMedicalAssuranceEnd').val();
let dateMembershipStart = $(this).closest('.dateMembershipStart').val();
let dateMembershipEnd = $(this).closest('.dateMembershipEnd').val();
//-----
let traineeForm = {
fullName: fullName,
gender: gender,
age: age,
phoneNumber: phoneNumber,
adress: adress,
dateMedicalAssuranceEnd: dateMedicalAssuranceEnd,
dateMembershipStart: dateMembershipStart,
}
this.gymRepo.addTrainee(traineeForm).then(() => {
alert("new trainee as been saved");
})
// })
}
you are using jquery so why don't you use some thing like that 您正在使用jQuery,为什么不使用类似的东西
$(':input').each(function(){
if($(this).hasClass('addTrainee'))
return;
console.log($(this).val() );
});
this will get you the values of all the input except for the save button 这将为您获取所有输入的值(保存按钮除外)
I would use @aa-Ahmed-aa answer with a more complete example. 我将使用@ aa-Ahmed-aa答案以及更完整的示例。
const recoverValues = function() {
const values = {};
$(':input').each(function(){
if($(this).hasClass('addTrainee'))
return;
// very ugly code
values[$(this).attr('class')] = $(this).val();
});
return values;
}
So that you can retrieve a good looking json for all your inputs except the submit button. 这样您就可以为除了提交按钮之外的所有输入检索一个漂亮的json。
PS: I like the spaceholder ;) PS:我喜欢太空人;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.