Я разрабатываю экран регистрации телефона с ядром asp.net MVC и Javascript, где поля динамически создаются с использованием Javascript. Я контролирую индекс каждого поля и всякий раз, когда удаляю запись, я обновляю значения индекса всех строк (пример: PersonViewModel.PeopleContactsViewModel[(i)].PessoaContato
). Все работает отлично ... Я использую PartialView
для создания полей (После удаления строки я отправляю индекс 2 для частичного просмотра, и он вставляется в div.).
Необходимость: при удалении второй строкиМне нужно пересоздать его, а затем снова изменить положение, используя тот же индекс 2.
Проблема: Когда я пытаюсь выполнить описанную выше процедуру, строка всегда располагается в конце. Я бы хотел, чтобы она всегда была в одном и том же месте и просто менялась.
Я думаю, что проблема возникает здесь: '$("# div-contatos").Append(data)';
var formaContatoIdPrevious = "0";
$("#div-contatos").bind("click", ".sel-forma-contato", function (e) {
//Forma de contato selecionada antes de alterar
formaContatoIdPrevious = $(this).closest('.row').find('.sel-forma-contato').val();
}).on("change", ".sel-forma-contato", function (e) {
//get row index
var rowIndice = $(this).closest('.row').index() != '' ? $(this).closest('.row').index() : '0';
//get row
var $this = $(this);
var pessoaContatoParametrosChangeViewModel = {
PessoaNatureza: $('#pessoaNatureza').val(),
FormaContatoIdChange: $(this).closest('.row').find('.sel-forma-contato').val(), //Forma de contato selecionada depois de alterar,
RowIndice: parseInt(rowIndice)
};
var pessoaContatoViewModel = {
Id: parseInt($(this).closest('.row').find('.hid-id').val() != '' ? $(this).closest('.row').find('.hid-id').val() : '0'),
PessoaId: parseInt($(this).closest('.row').find('.hid-pessoaId').val() != '' ? $(this).closest('.row').find('.hid-pessoaId').val() : '0'),
FormaContatoId: parseInt(formaContatoIdPrevious),
FormaContatoTipoId: parseInt($(this).closest('.row').find('.sel-contato-tipo').val() != '' ? $(this).closest('.row').find('.sel-contato-tipo').val() : '0'),
Contato: $(this).closest('.row').find('.txt-contato').val(),
Observacao: $(this).closest('.row').find('.txt-observacao').val(),
ContatoPrincipal: $(this).closest('.row').find('.ckb-contato-principal').is(":checked"),
Ativo: $(this).closest('.row').find('.ckb-contato-ativo').is(":checked")
};
pessoaContatoParametrosChangeViewModel.PessoaContatoViewModel = pessoaContatoViewModel;
$.ajax({
url: "/pessoa-gerenciar/change-forma-contato",
type: "POST",
data: JSON.stringify(pessoaContatoParametrosChangeViewModel),
contentType: "application/json",
success: function (data) {
$this.closest(".row").remove();
$("#div-contatos").append(data);
},
error: function () {
alert("Oops! Algo deu errado.");
stopLoadModalInside();
}
});