2009-11-08 67 views
1

我有一個函數,我想運行onChange。這工作正常與一個標籤。但是,當我用它上面的輸入標籤它只是說:javascript輸入字段onchange導致「不是函數」

form.saveFile不是一個函數

這工作:

<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();功能。

表單變量是在這樣一個包含js文件中聲明:

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

'form'變量來自哪裏?你在哪裏申報? – 2009-11-08 10:12:06

+0

請發佈一個最小化的html + javascript代碼,重現問題(無論是onclick還是非工作輸入onchange)。 – 2009-11-08 10:18:59

+0

我確實發佈了2個html代碼片段。一個工作,一個不工作。一個onclick的作品。但onchange表示函數未定義。 – jonaz 2009-11-08 10:20:48

回答

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

我在大多數瀏覽器中都試過。第一個是Firefox。 警報(1);在標籤和輸入標籤中都可以正常工作。但我不能從input-onchange訪問form.saveFile。只有從點擊 – jonaz 2009-11-08 10:24:40

+0

嘗試使用document.getElementById('form_id')。由於id是唯一的,因此在引用html頁面中的元素時不會遇到任何問題。 – 2009-11-08 10:34:59

1

內部形式form確實指的是具體的form元素。因此,您需要區分form元素和form變量。如果您在全局範圍內定義了form變量,則可以使用window.form。或者你只是重命名它。

相關問題