2012-12-17 7 views
0

jQuery ajax와 함께 제출하는 폼이 있으며이 폼 컨트롤은 submit이라는 컨트롤러 함수에 보내져 폼 데이터와 함께 필요한 다른 작업을 수행합니다. 사용자 이름에 소문자와 숫자 만 들어 있지 않은 경우 왜 내 양식 유효성 검사 라이브러리에 오류가 표시되지 않는지 알아 내려고합니다. 양식 제출 후폼 유효성 검사

$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|strtolower'); 

POST 값 :

username TestingUSER 

편집 :

지금까지 내가 제대로 PHP는 서버 측에 도달 알고있다.

PHP :

public function submit() 
{ 
    $output_status = 'Notice'; 
    $output_title = 'Not Processed'; 
    $output_message = 'The request was unprocessed!'; 

    $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|strtolower'); 
    $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean'); 
    $this->form_validation->set_rules('remember', 'Remember Me', 'trim|xss_clean|integer'); 

    if ($this->form_validation->run() == TRUE) 
    { 

    } 
    else 
    { 
     $output_status = 'Error'; 
     $output_title = 'Form Not Validated'; 
     $output_message = validation_errors(); 
    } 

    echo json_encode(array('output_status' => $output_status, 'output_title' => $output_title, 'output_message' => $output_message)); 
} 

편집 2 :

셰이크 대답 기반으로. "사용자의 필드 이름에 해당하는 오류 메시지에 액세스 할 수 없습니다."라는 응답이 다시 나타납니다. 메시지가 작동하지 않도록 제목에 대해 양식이 검증되지 않았다고 말합니다.

public function check_username($str) 
{ 
    if (preg_match('#[0-9]#', $str) && preg_match('#[a-z]#', $str)) 
    { 
     return TRUE; 
    } 
    $this->form_validation->set_message('username', 'This is not have an accepted value!'); 
    return FALSE; 
} 

편집 3 : 내가 뭘하고 싶은거야 것은 그것이 유효성 검사 오류가 아니라 pnotify 응답의 특정 오류가 있다는 것을 다시보고가있다

. 그러나 나는 양식 요소 아래에 특정 오류를 표시하고 싶습니다.

jQuery를 코드 :

http://pastebin.com/1KehMJkh

로그인 양식 :

http://pastebin.com/EfpBfbfN

+0

실제 아약스/자바 스크립트 코드와 실제 컨트롤러 코드를 표시하십시오. 아약스없이 작동합니까? –

+0

제 편집을 검토하십시오. –

+0

@KevinSmith, 필드 이름은'callback' 함수에서 설정할 때'username '대신에'check_username', 즉'$ this-> form_validation-> set_message ('check_username ','... ')'이어야합니다. –

답변

1

난 당신이

public function check_username($str) 
{ 
    if (preg_match('#[a-z0-9]#', $str)) { 
     return TRUE; 
    } 
    $this->form_validation->set_message('check_username', 'This is not have an accepted value!'); 
    return FALSE; 
} 

유효성 검사 규칙에 대한 컨트롤러에 콜백 함수를 사용할 수 있다고 생각

$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|callback_check_username'); 

You may like this too.

+0

이것은 대단한 대답입니다. 그러나 왜 알파 숫자 규칙과 콜백 둘 모두를 가지고 있는지 궁금합니다. –

+0

@KevinSmith, 감사합니다. 단지 'alpha_numeric'을 추가했으나 꼭 필요한 것은 아닙니다. –

+0

내 편집 2 응답을 확인할 수 있습니까? –