【发布时间】:2015-03-29 08:36:06
【问题描述】:
提前谢谢你。
该代码现在也可以完全按照我的需要工作,但是如果所有输入名称都相同,我不确定如何将每个新行传递给我的 .asp 邮件处理程序。我将在我的代码中的哪个位置索引输入框,以便我可以在提交期间唯一地调用它们并使用 .asp 邮件处理程序通过电子邮件发送它们?
感谢 stackoverflow 社区帮助我解决我迄今为止编写的代码的问题!
HTML
<form role="form" action="/wohoo" method="POST">
<label>Item</label>
<div class="catalog-fieldset">
<div class="catalog-wrapper">
<div class="catalog-items">
<ul>
<li>Quantity:
<input type="text" size="5" name="Qty[]">
</li>
<li>Width:
<input type="text" size="5" name="Width[]">
</li>
<li>Height:
<input type="text" size="5" name="Height[]">
</li>
</ul>
<button type="button" class="remove-line">Remove</button>
</div>
</div>
<button type="button" class="add-field">Add More...</button>
</div>
</form>
CSS
ul {
list-style: none;
display:inline-block;
margin:0 0 5px;
}
ul li {
display: inline-block;
}
.remove-line {
display:inline-block;
}
我已设置此代码http://jsfiddle.net/KeithDickens/afqh4a5o/2/
$(document).ready(function () {
var max_fields = 10; //maximum input boxes allowed
var x = 1; //initlal text box count
$('.catalog-fieldset').each(function () {
var $wrapper = $('.catalog-wrapper', this);
$(".add-field", $(this)).click(function (e) {
e.preventDefault();
if (x < max_fields) { //max input box allowed
x++; //text box increment
$('.catalog-items:first-child', $wrapper).clone(true).appendTo($wrapper).find('input').val('').focus();
}
});
$('.catalog-items .remove-line', $wrapper).click(function () {
x = x - 1; //initlal text box count
if ($('.catalog-items', $wrapper).length > 1) $(this).parent('.catalog-items').remove();
});
});
});
【问题讨论】:
-
您的问题实际上与“通过电子邮件提交表单”无关,而只是如何通过 $('.catalog-fieldset').each 来“迭代子控件” .知道每个输入的位置,您可以通过它们的索引来引用它们。也就是说,您将通过使用控件来构建数据结构,以一种由外而内的方式来处理它。您可以查看类似 Knockout.js 之类的内容,您可以先设置视图模型,以便 UI 由模型驱动。
-
我肯定会调查 Knockout。但是你是说没有办法根据我的代码完成我需要的东西吗?没有办法通过输入名称将那些动态创建的字段的值传递给我的 asp 邮件文件?
标签: javascript asp.net email