获取每个表单部分的 ID 和值
Fetch id and value for each form section
我有下面的表格并试图获取 id 和值并将数据放入 json 以传递给我的 controller.Below 是代码。我看不出我是什么missing.This 是第一次进入 web 开发
<div class="form-section">
<div class="section-header">
<span class="collapse-symbol"><i class="fas fa-angle-right"></i></span>
<span class="section-title">
Term
</span>
</div>
<div class="content" id="quote-edit-form">
<div class="row-container">
<div class="row-child">
<label class="control-label" for="StartDate">StartDate Date</label>
<input class="form-control text-box single-line" data-val="true" data-val-date="The field Start Date must be a date." id="Start-date" name="Terms.StartDate" type="datetime" value="" />
<label class="control-label" for="Terms_Date">Terms Date</label>
<input class="form-control text-box single-line" data-val="true" data-val-date="The field Terms Date must be a date." id="continuity-date" name="Terms.ContinuityDate" type="datetime" value="" />
<label class="control-label" for="Terms Period">Extension Period</label>
<input class="form-control text-box single-line" id="expiry-date" name="Terms.ExtensionPeriod" type="text" value="" />
</div>
<div class="row-child">
<label class="control-label" for="Terms.Choice">Choice</label>
<input class="form-control text-box single-line" id="expiry-date" name="Terms.Law" type="text" value="" />
<label class="control-label" for="Terms_C">C</label>
<input class="form-control text-box single-line" data-val="true" data-val-number="The field Commission must be a number." id="expiry-date" name="Terms.C" type="text" value="" />
<label class="control-label" for="Terms_P">P</label>
<input class="form-control text-box single-line" id="expiry-date" name="Terms.P" type="text" value="" />
</div>
</div>
我已尝试通过以下方式从我的 html
中捕获数据
var items = {};
$('.form-control text-box single-line').each(function () {
var obj = {
id: $(this).find('.id').val(),
value: $(this).find('.value').val()
};
o.items.push(obj);
});
此处将使用 id/value 构建一个对象。注意:我添加了设置间隔,因此您可以键入并查看正在填充的对象。
const buildItems = () => {
let items = {};
document.querySelectorAll('input').forEach(element => {
items[element.id] = element.value;
});
return items;
};
// check every 5secs (just to demo working)
setInterval(() => console.log(buildItems()), 5000);
<div class="form-section">
<div class="section-header">
<span class="collapse-symbol"><i class="fas fa-angle-right"></i></span>
<span class="section-title">
Term
</span>
</div>
<div class="content" id="quote-edit-form">
<div class="row-container">
<div class="row-child">
<label class="control-label" for="StartDate">StartDate Date</label>
<input class="form-control text-box single-line" data-val="true" data-val-date="The field Start Date must be a date." id="Start-date" name="Terms.StartDate" type="datetime" value="" />
<label class="control-label" for="Terms_Date">Terms Date</label>
<input class="form-control text-box single-line" data-val="true" data-val-date="The field Terms Date must be a date." id="continuity-date" name="Terms.ContinuityDate" type="datetime" value="" />
<label class="control-label" for="Terms Period">Extension Period</label>
<input class="form-control text-box single-line" id="expiry-date" name="Terms.ExtensionPeriod" type="text" value="" />
</div>
<div class="row-child">
<label class="control-label" for="Terms.Choice">Choice</label>
<input class="form-control text-box single-line" id="expiry-date" name="Terms.Law" type="text" value="" />
<label class="control-label" for="Terms_C">C</label>
<input class="form-control text-box single-line" data-val="true" data-val-number="The field Commission must be a number." id="expiry-date" name="Terms.C" type="text" value="" />
<label class="control-label" for="Terms_P">P</label>
<input class="form-control text-box single-line" id="expiry-date" name="Terms.P" type="text" value="" />
</div>
</div>
$('.form-control text-box single-line')
应该是 $('.form-control.text-box.single-line')
要获取 id 使用 .attr('id')
- 要获取值,请使用
$(this).val()
- 要获取数据,请使用
data('val')
或 .attr('data-val')
items = {};
应该是 items = [];
- ID 应该是唯一的。所以不要对多个元素使用相同的 id
var items = [];
$('.form-control.text-box.single-line').each(function () {
var obj = {
id: $(this).attr('id'),
dataVal : $(this).attr('data-val'),
value: $(this).val()
};
items.push(obj);
});
console.log(items);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="form-control text-box single-line" id="expiry-date1" name="Terms.Law" data-val="dataVal1" type="text" value="1" />
<input class="form-control text-box single-line" id="expiry-date2" name="Terms.Law" data-val="dataVal2" type="text" value="2" />
<input class="form-control text-box single-line" id="expiry-date3" name="Terms.Law" data-val="dataVal3" type="text" value="3" />
要为每个 obj
添加密钥 .. 使用 { [key] : .... }
var items = [];
$('.form-control.text-box.single-line').each(function () {
var obj = {
[$(this).attr('data-val')] : {
id: $(this).attr('id'),
dataVal : $(this).attr('data-val'),
value: $(this).val()
}
}
items.push(obj);
});
console.log(items);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="form-control text-box single-line" id="expiry-date1" name="Terms.Law" data-val="dataVal1" type="text" value="1" />
<input class="form-control text-box single-line" id="expiry-date2" name="Terms.Law" data-val="dataVal2" type="text" value="2" />
<input class="form-control text-box single-line" id="expiry-date3" name="Terms.Law" data-val="dataVal3" type="text" value="3" />
我有下面的表格并试图获取 id 和值并将数据放入 json 以传递给我的 controller.Below 是代码。我看不出我是什么missing.This 是第一次进入 web 开发
<div class="form-section">
<div class="section-header">
<span class="collapse-symbol"><i class="fas fa-angle-right"></i></span>
<span class="section-title">
Term
</span>
</div>
<div class="content" id="quote-edit-form">
<div class="row-container">
<div class="row-child">
<label class="control-label" for="StartDate">StartDate Date</label>
<input class="form-control text-box single-line" data-val="true" data-val-date="The field Start Date must be a date." id="Start-date" name="Terms.StartDate" type="datetime" value="" />
<label class="control-label" for="Terms_Date">Terms Date</label>
<input class="form-control text-box single-line" data-val="true" data-val-date="The field Terms Date must be a date." id="continuity-date" name="Terms.ContinuityDate" type="datetime" value="" />
<label class="control-label" for="Terms Period">Extension Period</label>
<input class="form-control text-box single-line" id="expiry-date" name="Terms.ExtensionPeriod" type="text" value="" />
</div>
<div class="row-child">
<label class="control-label" for="Terms.Choice">Choice</label>
<input class="form-control text-box single-line" id="expiry-date" name="Terms.Law" type="text" value="" />
<label class="control-label" for="Terms_C">C</label>
<input class="form-control text-box single-line" data-val="true" data-val-number="The field Commission must be a number." id="expiry-date" name="Terms.C" type="text" value="" />
<label class="control-label" for="Terms_P">P</label>
<input class="form-control text-box single-line" id="expiry-date" name="Terms.P" type="text" value="" />
</div>
</div>
我已尝试通过以下方式从我的 html
中捕获数据 var items = {};
$('.form-control text-box single-line').each(function () {
var obj = {
id: $(this).find('.id').val(),
value: $(this).find('.value').val()
};
o.items.push(obj);
});
此处将使用 id/value 构建一个对象。注意:我添加了设置间隔,因此您可以键入并查看正在填充的对象。
const buildItems = () => {
let items = {};
document.querySelectorAll('input').forEach(element => {
items[element.id] = element.value;
});
return items;
};
// check every 5secs (just to demo working)
setInterval(() => console.log(buildItems()), 5000);
<div class="form-section">
<div class="section-header">
<span class="collapse-symbol"><i class="fas fa-angle-right"></i></span>
<span class="section-title">
Term
</span>
</div>
<div class="content" id="quote-edit-form">
<div class="row-container">
<div class="row-child">
<label class="control-label" for="StartDate">StartDate Date</label>
<input class="form-control text-box single-line" data-val="true" data-val-date="The field Start Date must be a date." id="Start-date" name="Terms.StartDate" type="datetime" value="" />
<label class="control-label" for="Terms_Date">Terms Date</label>
<input class="form-control text-box single-line" data-val="true" data-val-date="The field Terms Date must be a date." id="continuity-date" name="Terms.ContinuityDate" type="datetime" value="" />
<label class="control-label" for="Terms Period">Extension Period</label>
<input class="form-control text-box single-line" id="expiry-date" name="Terms.ExtensionPeriod" type="text" value="" />
</div>
<div class="row-child">
<label class="control-label" for="Terms.Choice">Choice</label>
<input class="form-control text-box single-line" id="expiry-date" name="Terms.Law" type="text" value="" />
<label class="control-label" for="Terms_C">C</label>
<input class="form-control text-box single-line" data-val="true" data-val-number="The field Commission must be a number." id="expiry-date" name="Terms.C" type="text" value="" />
<label class="control-label" for="Terms_P">P</label>
<input class="form-control text-box single-line" id="expiry-date" name="Terms.P" type="text" value="" />
</div>
</div>
$('.form-control text-box single-line')
应该是$('.form-control.text-box.single-line')
要获取 id 使用
.attr('id')
- 要获取值,请使用
$(this).val()
- 要获取数据,请使用
data('val')
或.attr('data-val')
items = {};
应该是items = [];
- ID 应该是唯一的。所以不要对多个元素使用相同的 id
var items = [];
$('.form-control.text-box.single-line').each(function () {
var obj = {
id: $(this).attr('id'),
dataVal : $(this).attr('data-val'),
value: $(this).val()
};
items.push(obj);
});
console.log(items);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="form-control text-box single-line" id="expiry-date1" name="Terms.Law" data-val="dataVal1" type="text" value="1" />
<input class="form-control text-box single-line" id="expiry-date2" name="Terms.Law" data-val="dataVal2" type="text" value="2" />
<input class="form-control text-box single-line" id="expiry-date3" name="Terms.Law" data-val="dataVal3" type="text" value="3" />
要为每个 obj
添加密钥 .. 使用 { [key] : .... }
var items = [];
$('.form-control.text-box.single-line').each(function () {
var obj = {
[$(this).attr('data-val')] : {
id: $(this).attr('id'),
dataVal : $(this).attr('data-val'),
value: $(this).val()
}
}
items.push(obj);
});
console.log(items);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="form-control text-box single-line" id="expiry-date1" name="Terms.Law" data-val="dataVal1" type="text" value="1" />
<input class="form-control text-box single-line" id="expiry-date2" name="Terms.Law" data-val="dataVal2" type="text" value="2" />
<input class="form-control text-box single-line" id="expiry-date3" name="Terms.Law" data-val="dataVal3" type="text" value="3" />