2013-04-27 5 views
0

Ajax를 통해 양식을 제출하려고하는데 기능을 호출하지 않습니까?Firebug 콘솔에서 "함수가 정의되지 않았습니다."오류가 발생합니다.

나는 방화범 콘솔에서이 오류를 받고 있어요 :

ReferenceError: CreateUser is not defined 
CreateUser() 

나는이 함수를 호출하기 위해 사용하고 버튼 :

<input type="button" onclick="CreateUser()" id="RegisterUserBtn" class="btn" value="Sign Up" name=""> 

내 기능 :

<script language="JavaScript"> 
    $(document).ready(function(e){ 

     function CreateUser(){ 
      alert('CreateUser SignUp button is clicked.'); 
     } 
    }); 

</script> 

무엇 이 문제가 발생 했습니까? 함수 이름을 찾을 수없는 이유는 무엇입니까?

+3

'document.ready' 밖에서'function'을 선언하면 해결됩니다. –

+0

@DipeshParmar 네가 맞아서 document.ready 외부에 선언해야한다. thankyou. –

답변

2

CreateUser 함수를 익명 함수 내부에 넣으면 클로저가 생성됩니다. CreateUser은 포함 함수의 범위에 대해 "로컬"이며 onclick 이벤트가 정의되는 전역 범위에 노출되지 않습니다.

블록을 $(document).ready 블록 외부로 가져 가기 만하면됩니다.

+0

실수로,'$ (document) .ready'에서 정의 할 필요가 없었습니다. 이제 작동 중입니다. 감사.. –

4

HTML 코드의 on-event 속성이있는 "이전 스타일"의 두 가지 스타일의 자바 스크립트 코딩을 혼합합니다. 및 "unobstrusive javascript"를 $ (document) .ready 블록과 함께 사용합니다. 제 생각에 방해받지 않는 javascript를 일관되게 사용하는 것이 좋습니다 :

html로 onclick을 사용하지 마십시오. jQuery는 HTML 코드에서 모든 자바 스크립트를 유지할 수 있도록 도와줍니다. 이미 ID 버튼이 있습니다.

<input type="button" id="RegisterUserBtn" class="btn" value="Sign Up" name=""> 

그래서 당신의 jQuery를은 다음과 같이 수 :

$(document).ready(function(e) { 
    function CreateUser() { 
     alert('CreateUser SignUp button is clicked.'); 
    } 
    $('#RegisterUserBtn').on('click', CreateUser); 
}); 

"unobstrusive 자바 스크립트"이라고 HTML과 자바 스크립트의이 분리.

여기에 라이브 데모를 참조하십시오 : 당신이 다음 희망은 클릭 이벤트에 CreateUser 기능을 실행하는 경우이

1

을, 다음 $(document).ready 함수를 제거하고 함수를 title에 선언하십시오. 내용이로드 된 후 $(document).ready 내부의 함수가로드됩니다. html이 함수 선언 앞에로드됩니다.

또는 jquery on 함수를 사용할 수 있습니다.

$(document).ready(function(e) { 

    $('#RegisterUserBtn').on('click', function() { 
     alert('CreateUser SignUp button is clicked.'); 
    }); 

}); 
1

하는 데 도움이 대신

<script language="JavaScript"> 
    $(document).ready(function(e){ 

     $("#RegisterUserBtn").click(function(){ 
      alert('CreateUser SignUp button is clicked.'); 
     }); 
    }); 
</script> 

희망을 시도 jQuery를 사용하는 경우 http://jsfiddle.net/bjelline/nySxm/

관련 문제