0

javascript로 양식 마법사를 만들려고하는데 나는 눈에 띄지 않는 확인란의 유효성 검사에 문제가 있습니다. 페이지 머리 부분에는 눈에 거슬리지 않는 유효성 검사 스크립트 파일이 포함되어 있으며 이후에이 코드를 추가했습니다. jQuery.validator.unobtrusive.adapters.addBool("brequired", "required"); 전체 양식을 제출하면 작동합니다. 하지만 내가 말했듯이 나는 마법사를 만들고 싶다. 그래서 나는 (I의 단계 숨어 스트립)이 내용과 형식 후 몸이 스크립트 파일을 추가 :rebarsse 유효성 검사기 후 재검색 유효성 검사 어댑터가 작동하지 않음

var $jq = jQuery.noConflict(); 

if ($jq(document).ready()) { 
    //remove data-val attribute from all field in form 
    $jq('#form-wizard > div[id^=form-step] *') 
     .filter("input,select").removeAttr("data-val"); 
} 

function validate(form, currentStep) { 
    //add data-val attribute to the field which I want validate in this step 
    form.find("#form-step-" + currentStep + " *") 
     .filter("input, select").attr("data-val", "true"); 

    //without this, parse() function will not update validator 
    //regardless any changes in form (added data-val="true" attribute) 
    form.removeData("validator").removeData("unobtrusiveValidation"); 

    //I try add adapter again before parse but it don't work 
    //$jq.validator.unobtrusive.adapters.addBool("brequired", "required"); 
    $jq.validator.unobtrusive.parse(form); 

    if (!form.valid()) { 
     form.children("#form-step-" + currentStep + " *") 
      .filter("input, select").removeAttr("data-val"); 
     return false; 
    } 

    form.children("#form-step-" + currentStep + " *") 
     .filter("input, select").removeAttr("data-val"); 

    //reset jQuery Validate's internals 
    form.validate().resetForm(); 

    //reset unobtrusive validation summary, if it exists 
    form.find("[data-valmsg-summary=true]") 
     .removeClass("validation-summary-errors") 
     .addClass("validation-summary-valid") 
     .find("ul").empty(); 

    //reset unobtrusive field level, if it exists 
    form.find("[data-valmsg-replace]") 
     .removeClass("field-validation-error") 
     .addClass("field-validation-valid") 
     .empty(); 

    return true; 
} 

이의 validate() 함수가 다음 버튼을 클릭 한 후라고합니다. 그러나이 스크립트를 포함 시키면 어댑터와 같은 이음새가 작동하지 않습니다. Chcekbox가 유효하지 않습니다. 체크섬을 포함하여 모든 필수 필드를 구문 분석하기 전에 data-val="true" 집합을 확인했습니다.

편집 :

<form id="form-wizard"> 
    <div id="form-step-1"> 
     <input> 
      ... 
     <input> 
    </div> 
    <div id="form-step-2"> 
     <input> 
      ... 
     <input> 
    </div> 
</form> 

나는 정말 내가 놓친 거지 모르는 : 나의 양식은이 구조를 가지고있다.

답변

0

나는 그것을 현실적으로 더 복잡하게 만든다. 내가하고 싶은 것은 숨기기 (display : none) div이고 확인하고 싶지 않은 div뿐입니다. 숨겨진 필드의 유효성을 검사하지 않는다는 것을 알고 있었지만 숨겨진 필드는 직접 입력 태그 (또는 선택 태그) 여야한다고 생각했습니다. 그러나 일부 태그를 숨기는 것으로 충분합니다. 예 :

<div id="form-step-2" class="hidden">...some fieldset, input etc...</div> 

이제는 form-step-2 div의 유효성을 검사하지 않습니다. 내 이전의 접근 방식이 작동하지 않는 이유

어쨌든 난 아직도 ...

0

여러 가지 양식이있는 것처럼 보이며 유효성 검사를 켜고 끄기를 원합니다. 각 양식에 대해 유효성을 수동으로 활성화 및 비활성화 할 수 있습니다.

var $form = $("#my-step-1"); 

// disable validation 
$form.removeData('validator'); 
$form.removeData('unobtrusiveValidation'); 

// enable validation 
$.validator.unobtrusive.parse($form); 

당신이 양식의 모든 유효성 검사를 사용하지 않고 수동으로 처음 사용하도록 설정할 수 있습니다 준비 문서 : 여기

는 샘플 자바 스크립트 코드입니다. 그럼, 두 번째 등등.

+0

아니 정확히 몰라, 내가 ID = "# 양식 - 스텝 - (일부 번호로 된 div를 가지고있는 하나의 양식을 가지고) ". 그리고이 divs에서 나는 fieldset을 가지고 있습니다. – CoCumis

관련 문제