javascript输入字段onchange导致“不是函数”

时间:2009-11-08 10:04:10

标签: javascript

我有一个函数我想运行onChange。这适用于a-tag。但是当我在输入标签上使用它时,它只是说:

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){
    .................
  }
}

3 个答案:

答案 0 :(得分: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"/>

答案 1 :(得分:1)

内部表单form确实引用了特定的form元素。因此,您需要区分引用form元素的formform变量。如果您在全局范围内定义了window.form变量,则可以使用form来执行此操作。或者你只是重命名它。

答案 2 :(得分:0)

需要更多信息。你在所有浏览器中尝试过吗?它应该工作。如果文本已更改,一旦焦点离开文本框onchange将会发生。尝试使用alert()来测试函数是否真的被调用。你的功能可能有问题。希望这有帮助。