@kiberchainik
начинающий найкрутейшЫй програмЁр

Как добавить элемент под input?

есть такая форма
<form class="login-form" method="post" id="edit_profile_form" action="/profile/save" enctype="multipart/form-data">
                                <div class="form-group">
                                      <input type="text" id="author" class="form-control bdr" name="name" value="<?=$userDate['name']?>" placeholder="<?=$text_name?>" />
                                      <input type="text" id="author" class="form-control bdr" name="lastname" value="<?=$userDate['lastname']?>" placeholder="<?=$text_lastname?>" />
                                      <input type="email" id="email" class="form-control bdr" name="email" value="<?=$userDate['email']?>" placeholder="<?=$text_email?>" />
                                      <input type="text" id="phone" class="form-control bdr customer_phone" name="mobile" value="<?=$userDate['mobile']?>" placeholder="<?=$text_number_mobile?>" />
                                      <input type="text" id="adres" class="form-control bdr" name="adres" value="<?=$userDate['address']?>" placeholder="<?=$text_adres?>" />
                                      <select name="person" id="type_person" class="fq-select-option">
                                        <option value="0"><?=$text_select_type_person?></option>
                                        <?php foreach($type_person as $tp): ?>
                                        <option value="<?=$tp['index']?>" <?=($tp['type'] == $userDate['type'])?'selected':''?>><?=$tp['name']?></option>
                                        <?php endforeach ?>
                                      </select>
                                      <?php if($userDate['type'] == 'legal'): ?>
                                        <?php if(!empty($type_company)): ?>
                                        <select name="type_company" id="type_company" class="fq-select-option">
                                            <option value="0">-Select-</option>
                                            <?php foreach($type_company as $tc): ?>
                                            <option value="<?=$tc['id']?>" <?=($tc['id'] == $userDate['idTypeCompany'])?'selected':''?>><?=$tc['name']?></option>
                                            <?php endforeach ?>
                                        </select>
                                        <?php endif ?>
                                    <?php endif ?>
                                    <input type="text" name="p_iva" style="display:none;" id="p_iva" value="<?=$userDate['patent']?>" placeholder="<?=$text_p_iva?>" class="form-control bdr g_user" />
                                    <input type="text" name="company_name" style="display:none;" id="company_name" value="<?=$userDate['company_name']?>" placeholder="<?=$text_company_name?>" class="form-control bdr g_user" />
                                    <input type="text" name="company_link" style="display:none;" id="company_link" value="<?=$userDate['company_link']?>" placeholder="<?=$text_company_link?>" class="form-control bdr g_user" />
                                    <input type="text" name="about" value="<?=htmlspecialchars_decode($userDate['about'])?>" placeholder="<?=$text_field_about?>" class="form-control bdr" />
                                    <?=$text_field_img_logo?> <input type="file" name="profile_logo" id="input__file" class="input input__file" /><label for="input__file" class="input__file-button">
                                      <span class="input__file-icon-wrapper"><img class="input__file-icon" src="/Media/img/icon-track.png" alt="<?=$text_select_file?>" width="25" /></span>
                                      <span class="input__file-button-text"><?=$text_select_file?></span>
                                   </label>
                                </div>
                                  <div class="form-group">
                                    <span id="loader"></span> <input type="submit" name="submit" id="save_edit_btn" class="btn btn-submit btn-gradient" value="Save edit" />                                  
                                  </div>
                                  <ul id="ajax_result"></ul>
                              </form>


и есть такой вот ajax
$(document).ready(function() {
        $('#edit_profile_form').on('submit', function (e){
            e.preventDefault();
                        
            $.ajax({
                url: $(this).attr('action'),
                type:'post',
                contentType: false,
                processData: false,
                data: new FormData($(this).get(0)),
                dataType: 'json',
                cache: false,
                beforeSend: function () {
                    $('span#loader').css('display', 'block');
                    $('span#loader').html("<img src='/Media/img/Randi.gif' />");
                },
                error: function(req, text, error){ // отслеживание ошибок во время выполнения ajax-запроса
                    console.error('Упс! Ошибочка: ' + text + ' | ' + error);
                  },                
                success: function (result) {                    
                    $('#ajax_result').empty();
                    
                    if(result.errors.length > 0) {
                        $.map(result.errors, function(i, item) {
                          $('input[name='+i+']').after('<p class="error_list_icon">' + item + '</p>');
                          $('div[name='+i+']').after('<p class="error_list_icon">' + item + '</p>');
                        });
                    } else {
                        $('#ajax_result').append('<li class="addedSuccess">' + result.success + '</li>');
                        $('span#loader').empty();
                    }
                }
            });
        });
    });

ответ от сервера приходит верный
errors	Object { name: "Как Вас зовут?", lastname: "Напишите и Вашу фамилию, иначе как Вам будут отправлять деловые письма", mobile: "Как с Вами связаться? Письма это хорошо, но время-деньги", … }
    name	"Как Вас зовут?"
    lastname	"Напишите и Вашу фамилию, иначе как Вам будут отправлять деловые письма"
    mobile	"Как с Вами связаться? Письма это хорошо, но время-деньги"
    adres	"Напишите Ваш точный адрес"
    person	"Вы простой пользователь или предприниматель?"
    about	"Расскажите о себе что-то"
    profile_logo	"Загрузите фотографию/логотип"
    success	[]


у меня не получается получается сделать так чтоб после получение этого ответа с ошибками, данные ошибки появлялись каждая под своим input.
само поле не динамическое, динамические только select и input[type=file] я использую стилизацию, поэтому они как динамические
  • Вопрос задан
  • 341 просмотр
Пригласить эксперта
Ответы на вопрос 1
@eandr_67
web-программист (*AMP, Go, JavaScript, вёрстка).
Значение атрибута надо заключать в кавычки:
$('input[name="' + i + '"]').after('<p class="error_list_icon">' + item + '</p>');

Но, ИМХО, лучше изначально создать в форме элементы для вывода текстов ошибок и просто скрывать их, когда они пусты.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы