2017-11-06 4 views
2

양식을 제출하지 않고 ActiveForm의 내용을 확인하려고했습니다.
나는 현재 액티브의 코드를 다음form.yiiActiveForm ("validate") 호출시 ActiveRecord 사용자 정의 유효성 검사기가 실행되지 않음

var form = $(this).closest('tr').find('form'); 
var data = form.serialize(); 

d = form.data("yiiActiveForm"); 
$.each(d.attributes, function() { 
    this.status = 3; 
}); 

form.yiiActiveForm("validate"); 
if (form.find(".has-error").length) { 
    return false; 
} 

이 잘 작동하고 규칙에 정의 된 미리 정의 된 활성 형태의 검증에 검증 할 때 오류가 (화면 에 표시됩니다) 함수를 사용하여 자바 스크립트에서이 일을하고 있습니다.

array_push($r, ['tel_no', 'required', 'message' => 'input telephone no.']); 
array_push($r, ['mail_address', 'email', 'message' => 'input correct email']); 

하지만 다음

array_push($r, ['card_no', 'validateCardNo']); 


public function validateCardNo($attribute, $params) { 
    if (!preg_match('/^[A-Za-z0-9-\/]+$/D', $this->$attribute)) { 
     $this->addError('card_no', 'input correct card no'); 
    } 
} 

같은 사용자 정의 유효성 검사기에

나는 또한 사용자 지정 유효성 검사기를 트리거하기 위해 내 자바 스크립트에 뭔가가 필요하십니까? 어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

+0

당신은 사용할 필요가 [enableAjaxValidation 속성 (http://www.yiiframework.com/doc-2.0/guide-input-validation.html#ajax-validation). js를 사용할 필요가 없습니다. –

답변

0

을, 나는 validateAttribute를 호출하여 사용자 정의 유효성 검사기를 호출 할 수 있었다.

form.yiiActiveForm("validate"); 
form.yiiActiveForm("validateAttribute", "user-card_no"); 
if (form.find(".has-error").length) { 
    return false; 
} 

또한보기 측면에서 enableAjaxValidation을 true로 설정하십시오.

<?php $form = ActiveForm::begin(['id' => 'owner_form', 'enableAjaxValidation' => true]); ?>