2012-05-05 2 views
2

내 응용 프로그램에서 클라이언트 측 유효성 검사 레일 gem v3.1.0을 사용하고 있습니다. jquery 대화 상자에 유효성을 검사해야하는 양식이 표시됩니다. 클라이언트 상태 유효성 검사가 해당 양식에서 사용 가능합니다. 모든 것이 유효성 검사와 잘 작동하지만 사용자가 제출하지 않고 대화 상자를 취소하면 기존 유효성 검사 오류를 해결하고 싶습니다. 이 방법으로 사용자가 대화 상자를 다시 시작하면 유효성 검사 오류가 이미 양식에 표시되지 않습니다.클라이언트 측 유효성 검사에서 오류 메시지 지우기 rails gem

대화 상자를 닫을 때 각 요소에 대한 클라이언트 상태 유효성 검사 통과 이벤트를 트리거하여이 작업을 시도했습니다. 오류 필드 및 레이블을 제거하여 작동합니다. 한 가지 문제는이 코드 이후에 이어지는 유효성 검사가 작동하지 않는다는 것입니다. 바운드 이벤트가 제거되어 더 이상 트리거되지 않는다고 생각합니다.

더 좋은 방법이 있나요?

내 JQuery와의 대화 :

불행하게도 지금이 작업을 수행하는 깨끗한 방법이되지 않습니다 : 브라이언 Cardarella, 클라이언트 사이드되는 검증 보석의 개발자에서

$('#create_dialog').dialog({ 
      height: 260, 
      width: 420, 
      title: "title", 
      buttons: {"<%= I18n.t("create") %>": function(e) { 
       $('#new_segment').submit(); 
       }, 
       Cancel: function() { 
        var form = $('#new_segment'); 
        form.find('[data-validate]:input').each(function() { 
         $(this).trigger('element:validate:pass'); 
        }); 
        $(this).dialog("close"); 

        } 
       } 
     }); 
+0

적 이것에 대한 해결책을 얻을 작동? –

답변

1

하지 4.0에서 변경되지만이

/** 
* Remove Embedded validation perfectly that is compatible with validation gem 
* @param field 
* @returns {boolean} 
*/ 
function removeValidationMessage(field) { 
    var $field = $(field) || field; 
    /** 
    * First wrap the previously occurring label in wrapper div with class 'field_with_errors' 
    * Then Wrap the field within a wrapper div of same class 
    * Then add validation message after the field with class name 'message' 
    */ 
    if ($field.siblings('.message').length > 0) { 
    $field.parent().prev('.field_with_errors').find('label').unwrap(); 
    $field.unwrap(); 
    $field.next('.message').remove(); 
    return true; 
    } 
    return false; 
}