2016-06-28 7 views
0

저는 두 라이브러리에서 새로운 기능이 있습니다. 일부 select에서 select2를 사용하기 시작했고 양식이 유효한지 확인하기 위해 파슬리를 사용합니다. 유효성 검사가 정상적으로 작동하지만 CSS 클래스 및 오류 메시지에 몇 가지 문제가 있습니다.Select2와 함께 파슬리 사용

Select2 원래 SELECT의 새 태그를 만든 다음 숨 깁니다. gentelella 부트 스트랩 템플릿의 custom.css 파일을 편집하여 span.parsley-error를 추가하고 select2의 js 파일에서 새 span 태그 중 하나에 ID를 추가 했으므로 'data-parsley-class-handler'및 ' data-parsley-errors-container '를 선택하십시오. 올바른 위치에 메시지 오류를 표시하고 CSS를 select2에 의해 생성 된 새 SPAN 태그로 변경할 수 있습니다.

문제는 선택 항목에서 하나의 옵션을 선택하면 parsley-error CSS 클래스가 SPAN에서 제거되지 않으며 오류 메시지도 표시되지 않습니다.

내가 무슨 짓을?

HTML : gentelella 부트 스트랩 템플릿에서

<div class="form-group col-md-2 col-sd-4 col-xs-6"> 
    <label for="casilla_cliente_id" class="control-label">RUT <span class="required">*</span></label> 
    <select class="select2_single form-control select2-hidden-accessible" tabindex="-1" name="casilla[cliente_id]" data-parsley-errors-container="#er_cliente_id" data-parsley-class-handler="#select2-casilla_cliente_id" required="required" id="casilla_cliente_id" aria-hidden="true"> 
     <option value="" selected="selected"></option> 
     <option value="14933">1.318.XXX-X | Name 1</option> 
     <option value="16469">1.363.XXX-X | Name 2</option> 
     <option value="17268">99.594.XXX-X | Name 3</option> 
     <option value="16129">99.599.XXX-X | Name 4</option> 
    </select> 
    <span class="select2 select2-container select2-container--default select2-container--focus" dir="ltr" style="width: 153px;"> 
     <span class="selection"> 
      <span id="select2-casilla_cliente_id" class="select2-selection select2-selection--single" role="combobox" aria-haspopup="true" aria-expanded="false" tabindex="-1" aria-labelledby="select2-casilla_cliente_id-container"> 
       <span class="select2-selection__rendered" id="select2-casilla_cliente_id-container"> 
        <span class="select2-selection__placeholder">RUT</span> 
       </span> 
       <span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span> 
      </span> 
     </span> 
     <span class="dropdown-wrapper" aria-hidden="true"></span> 
    </span> 
    <span id="er_cliente_id"></span> 
</div> 

custom.css 파일 :

span.parsley-error, input.parsley-error, textarea.parsley-error, select.parsley-error { 
    background: #FAEDEC !important; 
    border: 1px solid #E85445 !important; 
} 

select2.full.js :

BaseSelection.prototype.render = function() { 
    var $selection = $(
     '<span id="select2-' + this.$element.attr('id') + '" class="select2-selection" role="combobox" ' + 
     ' aria-haspopup="true" aria-expanded="false">' + 
     '</span>' 
    ); 

select에서 하나의 옵션을 선택하면 누군가가 CSS 클래스를 제거하고 select2에서 오류 메시지를 표시하는 데 도움이되기를 바랍니다.

미리 감사드립니다. 이것은 또한 선택 2 작동

$("#select_id").change(function() { 
      $(this).parsley().validate(); 
}); 

: 파슬리 버전 2는 선택 변경 이벤트 후 유효성 검사를 강제 할 수에서

답변

1

나는 이것을 처리하기 위해 a PR을 만들었습니다.

$("#select_id").change(function() { 
    $("#select_id").trigger('input') 
}) 
: 한편

가장 쉬운 수동 input 이벤트를 트리거하기 위해 아마