2009-11-08 2 views
1

나는 onChange를 실행하고 싶은 함수가 있습니다. 이것은 a 태그로 잘 작동합니다. 내가 입력 태그에서 사용할 때 그것은 단지 말한다 :자바 스크립트 입력 필드 onchange가 "함수가 아닙니다"를 발생시킵니다.

<a onclick="form.saveFile('fec056b774ffefa479c7dd3a632275cb','fec056b774ffefa479c7dd3a632275cb_filetest'); return false;" href="#">Upload file</a> 

이 작동하지 않습니다 :

<input onchange="form.saveFile('fec056b774ffefa479c7dd3a632275cb','fec056b774ffefa479c7dd3a632275cb_filetest');" id="fec056b774ffefa479c7dd3a632275cb_filetest" class="file" type="file" name="fec056b774ffefa479c7dd3a632275cb_filetest" accesskey="F"/> 

form.saveFile는이 작동 기능

아니다

두 가지 모두 동일한 form.saveFile()을 호출합니다. 기능.

양식 변수는이 같은 JS 포함 파일에 선언 :

form = { 
    version: '1.0.0', 
    ...alot of functions... 
    saveFile : function(callback,p){ 
    ................. 
    } 
} 
+2

여기서'form' 변수의 출처는 어디입니까? 그것을 선언 한 곳은 어디입니까? –

+0

문제를 재현하는 html + javascript 코드를 최소한으로 게시하십시오 (onclick 및 작동하지 않는 입력 onchange 모두). –

+0

2 개의 html 발췌 문장을 게시했습니다. 하나는 일하고 하나는 일하지 않습니다. onclick 작동합니다. 하지만 onchange 함수는 함수가 정의되지 않았다고 말합니다. – jonaz

답변

3

formonchange 처리기의 예약어입니다. 변수의 이름을 바꾸면 작동합니다 :

var frm = { 
    version: '1.0.0', 
    saveFile : function(callback,p){ 
    } 
}; 

<input onchange="frm.saveFile('fec056b774ffefa479c7dd3a632275cb','fec056b774ffefa479c7dd3a632275cb_filetest');" id="fec056b774ffefa479c7dd3a632275cb_filetest" class="file" type="file" name="fec056b774ffefa479c7dd3a632275cb_filetest" accesskey="F"/> 
0

더 많은 정보가 필요합니다. 모든 브라우저에서 사용해 보셨습니까? 작동해야합니다. 텍스트가 변경되면 포커스가 텍스트 상자를 벗어나면 onchange가 발생합니다. 함수가 실제로 호출되는지 테스트하기 위해 alert()을 사용해보십시오. 당신의 기능에 문제가있을 수 있습니다. 이것이 도움이되기를 바랍니다.

+0

대부분의 브라우저에서 사용해 보았습니다. 첫번째 것은 파이어 폭스였습니다. 알리미 (1); a-tag와 input-tag 모두 잘 작동합니다. 그러나 나는 input-onchange에서 form.saveFile에 접근 할 수 없다. a-onclick – jonaz

+0

에서만 document.getElementById ('form_id')를 사용해보십시오. id는 고유 한 것이므로 html 페이지의 요소를 참조 할 때 어떤 문제도 발생하지 않습니다. –

1

내부 양식 form은 특정 form 요소를 참조합니다. 따라서 form 요소와 form 변수를 나타내는 form을 구별해야합니다. form 변수를 전역 범위에서 정의한 경우 window.form을 사용하면됩니다. 아니면 이름을 바꿉니다.

관련 문제