2013-07-17 5 views
0

У меня есть форма, которая имеет обязательные поля. Они отображают ошибки, когда вы нажимаете «Продолжить», но не вводите ничего в обязательные поля. Если вы нажмете продолжить, не вводя ничего в необходимые поля, предыдущее сообщение об ошибке останется, а под ним будет создано новое. Что мне делать, этого не происходит.JQuery Ajax Отправить сообщение об ошибке Stack

ответ

0

Теперь, когда вы очистили структуру и как хотите, чтобы она работала, это должно сработать для вас. Просто удаляйте все предыдущие сообщения об ошибках каждый раз при отправке формы.

function submit_ajax_form() { 
    $('.error_span').remove(); 
    // submits the form with Ajax especting a JSON response 
    $('#usermgmtform').ajaxSubmit({ 
    success: function(response, statusText, xhr) { 
     if (response['status'] == 'ok') { 
     window.location.replace(response['location']); 
     } else { 
     jQuery.each(response['errors'], function(field, errors) {    
      jQuery.each(errors, function(i, error) { 
      $fieldId = $('#id_'+field);     
      $fieldId.closest('.control-group').addClass('error'); 
      $fieldId.parent().append($('<span class="error_span">').addClass('help-inline').append(error)); 
      }) 
     }) 
     } 
    } 
    }) 
} 
+0

извините, я пытался изменить свой ответ в случае, если вы ваш HTML структурированы так, но я, кажется, где-то есть бродячий pre-tag. Если у вас это работает, я сдаюсь. Вы можете попробовать заменить часть else вашей функции успеха новым отредактированным кодом. – Rooster

+0

да, вот что я сделал, но получаю тот же результат. Если я оставлю '$ fieldId.parent() .html ('');' в моем коде, необходимые поля ввода удаляются, значит, им некуда их вводить. Однако, если я удаляю '$ fieldId.parent() .html ('');', то он работает, за исключением того, что сообщения об ошибках продолжают отображаться, даже если в этом поле есть что-то в нем при нажатии кнопки отправки. – mikros0ft

+0

@ mikros0ft Вы можете разместить html-структуру входов – Rooster

0

Вы можете изменить это

$fieldId.parent().append($('<span>').addClass('help-inline').append(error)); 

К

var fieldParent = $fieldId.parent(); 
if(fieldParent.has('#form-error')) { 
    $('#form-error').text(error); 
} else { 
    fieldParent.append(
     $('<span>', { 
     id: 'form-error', 
     'class': 'help-inline', 
     text: error 
     }) 
    ); 
} 
Смежные вопросы