我的目标是将所有textarea框(由用户添加)的数据提取到console.log。用我目前的代码,它只能从第一个框中获取。在console.log中打印动态DOM数据
HTML
<form class="" action="" method="post">
<div class="form-group" id="testID">
<div id="afield">
<textarea rows="2" cols="160" class="form-control nField" name="nameField" placeholder="Enter address here." required ></textarea>
<br>
</div>
<div class="col-sm-11">
<p class="help-block">Hit the + to add more fields.</p>
</div>
<div class="col-sm-1">
<button type="button" class="btn btn-default" id="addBtn" style="margin-top:5px!important;">
<i class="fa fa-plus fa-lg"></i>
</button>
</div>
<button type="submit" class="btn btn-primary addSubmit">
Save
</button>
</div>
</form>
JS:
$('#addBtn').click(function(){
var addField = $('<div id="afield"><textarea rows="2" cols="160" class="form-control nField" name="nameField" placeholder="Enter address here." required ></textarea></div><br>');
$('#afield').append(addField);
});
$('.addSubmit').click(function(e){
e.preventDefault();
var data = $('#testID').map(function() {
return {
Address: $(this).closest('form').find('[name="nameField"]').val()
};
}).get();
var jsonString = JSON.stringify(data);
console.log(jsonString);
});
我试着做console.log(地址);在您的代码后,但它不打印任何东西。我只是一个刚刚学习的初学者。 –
这应该与问题发布的代码一起工作,而不是根据praveen的回答发生任何更改。 您需要替换: 'return { Address:$(this).closest('form')。find('[name =“nameField”]').val() };' from your code with给出的代码。你可以在return语句之前使用console.log。 – Sachin
你是男人!它完全按照我的想法工作。非常感谢。现在我最好去理解它背后的逻辑。再次感谢。 :) –