【问题标题】:onchange event not firing when changedonchange 事件在更改时不会触发
【发布时间】:2015-05-29 14:12:25
【问题描述】:

我的 html 中有这个,它有效:

           <input id="File1" type="file" runat="server" onchange="fileUpload(value)"  /> 

但对于 IE8 及以下版本,我有一个按钮来创建新输入:type=file 它正在工作并上传文件。

但我需要先将值发送到函数。

            newUploadBox.setAttribute("onchange", "fileUpload(value)");

现在当我进入检查元素时,一切正常。

它像原始输入一样呈现出来。

不幸的是,它不像第一个那样进入函数。

我喜欢这里的一些帖子: Dynamically added SELECT element does not fire onchange event in Internet Explorer && onchange with alert not working in ie

但是没有人能帮助我。

https://jsfiddle.net/satjzr6z/

【问题讨论】:

  • 你是如何声明fileUpload的?你能提供一个小提琴/更多代码吗?
  • jsfiddle.net/satjzr6z 它适用于现代浏览器。不是 IE8

标签: javascript html browser dynamic event-listener


【解决方案1】:

试试这个代码

newUploadBox.onchange = fileUpload.bind(this, value);

function.prototype.bind - 创建一个与原始函数具有相同主体的绑定函数

Method description

【讨论】:

  • 这可行,但不适用于我的应用程序。我需要一个更动态的解决方案。不过还是谢谢你。我仍然会对此表示赞同。
【解决方案2】:

我添加了一个 onClientClick 事件处理程序来为我检查验证,而不是执行 onchange 事件侦听器。

我使用了以下功能:

function FileUploadValidate() {
var input;
var thisId;
var fileInput;

input = document.getElementsByTagName("input");

for(i = 0;i < input.length; i++)
{
    if(input[i].getAttribute("type") === "file"){
        thisId = input[i].getAttribute("id"); 
        fileInput = document.getElementById(thisId);
        fileUpload(fileInput.value, thisId)

    }
}

for(i = 0;i < input.length; i++)
{
    if(input[i].getAttribute("type") === "file"){
        thisId = input[i].getAttribute("id"); 
        if(document.getElementById(thisId).style.backgroundColor === "#ff0000"){
            alert("true")
            document.getElementById("decoyBtn").innerText = "Check"
            return
        }else{
            document.getElementById("decoyBtn").style.display = "none"
            document.getElementById("btnSubmit").style.display = "inline"

        }


    }
  } 
}

这将解析我所有的文件上传输入字段。 如果一个不符合我的要求,它将不允许他们上传。 这是我能想到的最好的解决方法,可以在 IE8 中使用。

我还使用了一个诱饵按钮,它基本上就是我的“onClientClick”,因为我不想意外上传。

每个循环的第二个循环检查所有验证的条件,如果验证成功,它将从 DOM 中移除诱饵按钮并引入 ASP.NET 按钮进行上传。

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多