2014-07-16 8 views
0

내 페이지 (양식 유효성 검사)에서 AJAX를 사용하여 PHP 스크립트를 호출해야합니다. 나는 PHP로 매우 편리하지만 javascrip, jScript 또는 다른 클라이언트 측 언어와는별로 좋지 않아서 내 요구를 채우는 무료 데모 스크립트를 발견했으며 지금은 배울 수 있는지 알아보기 위해 놀고있다. 그 과정에서 뭔가. 내가 두 함수를 하나로 합칠 수 있는지 궁금하다.jScript에서 두 함수를 병합

기능은 다음과 같이 기본적으로 같습니다 뭔가가 변경되는 경우

// When user changes something in the form 
$("#signup").change(function() 
{ 
    // ... validation code here 
} 

// When the form (page) first loads 
$("#signup").ready(function() 
{ 
    // ... validation code here 
} 

첫 번째 함수는 형태의 유효성을 검사합니다.

가끔 사용자가 양식을 제출할 때 (예 : Enter 키를 누름) 사용자 입력이 양식에서 변경 될 때까지 유효성 검사가 다시 발생하지 않는 경우가 있습니다.

유효성 검사 결과를 사용하여 입력 요소에 적용 할 클래스를 결정하고 (사용자에게 완료 여부를 알리기 위해) 양식을 완료하지 않고 제출하면이 상태를 유지하거나 다시 발생 시키려고합니다 . 나는 모든 필수 입력란이 채워질 때까지 사용자가 제출할 수있는 폼 유효성 검사를 적용 할 수 있지만 알 수없는 이유로 가능하지 않은 것으로 가정합시다.

두 번째 함수는 첫 번째 함수의 복사본으로, 페이지가로드되는 즉시 양식. 이 스크립트는 원래 데모 스크립트에 없었지만 첫 번째 기능을 복제하고 "변경"이라는 단어를 "준비"로 변경하여 원하는대로 내 양식의 유효성을 확인할 수있었습니다.

지금 호기심 때문에, 두 개의 동일한 기능 대신 하나의 기능으로 병합하는 방법이 있습니까? PHP의 OR 연산자와 같은 것 :

$("#signup").change(function() || $("#signup").ready(function() 
{ 
    // ... validation code here 
} 

편집 : 예, 저는 그것에 대해 봤습니다. 성공하지 못했지만 javascript/jScript 지식이 부족하여 정확한 검색어를 사용하지 못했습니다 ...

답변

1

설명하는 것과 같은 것은 없지만 동일한 효과가 있습니다.

var validate = function() { 
    // ... validation code here 
} 

$("#signup").change(validate); 
$("#signup").ready(validate); 

함수를 만들고 변수에 할당 한 다음 해당 함수에 대한 참조를 가질 수 있습니다. 그런 다음이 참조를 매개 변수 (예 : .change, .ready, setTimeout, setInterval 등)로 전달해야하는 모든 항목에이 참조를 전달할 수 있습니다.

+0

그냥 시도해 보니 매력적이었습니다. 중복이 없으면 코드가 훨씬 나아졌습니다! 감사 :) –

0

여기에 대한 방법이 있지만 jQuery 나를 위해 가장 간결한 것은 바로 즉각적으로 의도적으로 change 이벤트 처리기를 트리거하는 것입니다.

$("#signup").change(function() 
{ 
    // ... validation code here 
}).trigger('change'); // causes validation to run