动态添加字段输入不会存储值并传递给控制器
Dynamically adding field inputs are not storing values and passing to controller
我正在开发产品销售系统。我有3个字段产品名称,数量(文本框)和产品类型下拉列表。我正在动态添加行,然后列出所有订购的产品,然后将其传递给控制器。但它正在失败。还要注意,稍后我需要使用select2,所以我希望字段具有唯一的id。我认为问题主要围绕着如何从字段中获取值,然后将其传递给模型。我的小提琴是点击这里找小提琴(https://jsfiddle.net/Yogida/x19p3pqp/")
$("#btnSubmit").click(function(e) {
e.preventDefault();
var _this = $(this);
var url = _this.closest("form").attr("action");
var rows = [];
var items = $(".itemRow");
alert(items);
$.each(items, function(i, item) {
// alert(i);
// alert(item);
// alert(items);
var partnumber = $(item).find("input[id='PartNumber" + i + "[]']").val();
var partquantity = $(item).find("input[id='PartQuantity" + i + "[]']").val();
var partordertypeid = $(item).find("select[id='PartOrderTypeId" + i + "[]']").val();
var row = {
PartNumber: partnumber,
Quantity: partquantity,
OrderTypeId: partordertypeid
};
rows.push(row);
});
//Let's post to server
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(rows),
contentType: "application/json",
success: function() {
window.setTimeout(function() {
location.reload()
}, 3000)
}
})
//.done(function (result) {
// //do something with the result
// // window.alert(rows);
//})
});
cshtml:
<div id="items">
@class="出席"id="出席"@
我部分解决了这个问题。现在通过分配id和使用for循环来存储值,但当我删除在中间的任何记录时,它会出现问题。我现在尝试的另一件事是使用select2添加自动完成搜索。当我添加新项目时,调用"上课"是错误的,所以从第二行我没有得到select2的搜索功能。对剩余部分的任何帮助都将不胜感激。我的javascript看起来像
var max_fields = 10; //maximum input boxes allowed
var wrapper = $(".itemRow"); //Fields wrapper
var add_button = $('.add_row'); // (".add_row")//$(".addRow"); //Add button ID
var indexNo = 2;
var x = 1; //initlal text box count
$(add_button).click(function (e) { //on add input button click
//e.preventDefault();
if (x < max_fields) { //max input box allowed
x++; //text box increment
//$(wrapper).append('<div><input type="text" name="mytext[]" id="attendee"/><a href="#" class="remove_field">Remove</a></div>'); //add input box
//$(wrapper).append('<div><input type="text" class="formfield" name="PartNumber[]" /><input type="text" class="formfield" name="PartQuantity[]" /><input type="text" class="formfield" name="PartOrderTypeId[]"><a href="#" class="remove_field">Remove</a></div>'); //.appendTo($formfield); //add input box
$(wrapper).append('<div id="itemRow' + indexNo + '"><input type="text" class="formfield attend" name="PartNumber' + indexNo + '[]" id="partnumberid' + indexNo + '[]" /><input type="text" class="formfield" name="PartQuantity' + indexNo + '[]" id="partquantityid' + indexNo + '[]" /><input type="text" id="partordertypeid' + indexNo + '[]" class="formfield" name="PartOrderTypeId' + indexNo + '[]"><a href="#" class="remove_field" name="Delete' + indexNo + '">Remove</a></div>'); //.appendTo($formfield); //add input box
indexNo++;
}
});
$(wrapper).on("click", ".remove_field", function (e) { //user click on remove text
e.preventDefault();
$(this).parent('div').remove();
x--;
indexNo--;
})
$("#deleteRow").on('click', function () {
//var template = $("#items").find(".itemRow").last().remove();
//var template = $("#items").find(".itemRow").
$('.formfield:checkbox:checked').parents(".itemRow").remove();
// $('.itemRow').remove(template);
});
$("#btnSubmit").click(function (e) {
e.preventDefault();
var _this = $(this);
var url = _this.closest("form").attr("action");
var rows = [];
var items = $(".itemRow");
alert(items);
var counter = 1;
//$.each(items, function (i, item) {
//for (i = 0; i < 3; i++)
for (i = 0; i < indexNo; i++)
{
//var partnumber = $(item).find("input[id='partnumberid[]']").val();
//alert(i);
// alert(item);
alert(items);
var partnumber = $(items).find("input[name='PartNumber" + counter + "[]']").val();
//var partnumber = $(items).find("input[name='PartNumber[]']").val();
//var partnumber = $(item).find("input[name='PartNumber" + i + "[]']").val();
//var partnumber = $(item).find("input[name='PartNumber']").select2("data"); //newRow.find('.attend').select2('data', null)
alert(i);
var partquantity = $(items).find("input[name='PartQuantity" + counter + "[]']").val();
//var partquantity = $(item).find("input[name='PartQuantity" + i +"[]']").val();
//var partordertypeid = $(item).find("input[name='PartOrderTypeId']").val();
var partordertypeid = $(items).find("input[name='PartOrderTypeId" + counter + "[]']").val();
//var partordertypeid = $(item).find("select[id='PartOrderTypeId[]']").val();
//var partordertypeid = $(item).find("select[name='PartOrderTypeId" + i + "[]']").val();
var row = { PartNumber: partnumber, Quantity: partquantity, OrderTypeId: partordertypeid };
rows.push(row);
counter++;
}
//});
//Let's post to server
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(rows),
contentType: "application/json",
success: function () {
//$("#part_message").html("<p> Your article was successfully added!</p>");
window.setTimeout(function () { location.reload() }, 3000)
}
})
//.done(function (result) {
// //do something with the result
// // window.alert(rows);
//})
});
});
$(document).ready(function () {
$('.attend').select2(
{
//Does the user have to enter any data before sending the ajax request
minimumInputLength: 1,
allowClear: true,
ajax: {
//How long the user has to pause their typing before sending the next request
//The url of the json service
url: "/Order/TypeHead",
dataType: 'json',
//Our search term and what page we are on
data: function (term) {
return {
searchTerm: term
};
},
results: function (data, page) {
return { results: data };
}
}
});
相关文章:
- 有可能将东西存储在MVC控制器中吗
- 如何读取存储在图像的数据src中的URL,并在另一个img控制器的src中设置该URL onclick
- extjs:将存储中的变量传递给控制器
- 将存储负载从视图更改为控制器 ExtJS4
- Laravel:如何将数据从控制器传递到存储库
- 将控制器实例的列表存储在AngularJS中的另一个控制器中
- 用javascript调用一个控制器函数,该函数将使用ajax(Laravel 4)在数据库中存储一个条目
- 如何在Rails视图控制器中访问HTML5本地存储
- UI状态是否应存储在模型或控制器中
- 来自工厂的原型中的方法出现了奇怪的错误,存储在控制器的$scope中
- Angular:提供本地存储数据的最佳方式?在每个控制器上设置rootScope
- 如何在extjs中创建一个存储在控制器中的实例
- 如何根据存储信息和模型之间的多重关系在控制器中创建计算属性
- 为控制器中的存储事件设置侦听器
- 在页面加载时,将存储在PHP会话中的用户id传递给AngularJS控制器
- 如何将全局异步数据存储/通信到控制器
- 使用angularjs在控制器的文本框中放置本地存储值
- 我应该如何延迟加载ExtJS MVC控制器、视图、存储和模型
- 动态添加字段输入不会存储值并传递给控制器
- 带有typescript的Angular js-数据应该存储在控制器或服务中吗