2015-05-29 2 views
1

у меня есть это в моем HTML, который работает:OnChange события не стрельбы при изменении

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

Но для IE8 и ниже У меня есть кнопка, чтобы создать новый вход: тип = файл Это работает и добавление файл.

Но мне нужно сначала отправить значение функции.

  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/

+1

Как вы объявляете fileUpload? Можете ли вы предоставить скрипку/еще код? – swornabsent

+0

https://jsfiddle.net/satjzr6z/ Он будет работать в современных браузерах. Не IE8 – Christian4423

ответ

1

Попробуйте этот код

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

function.prototype.bind - создает связанную функцию, которая имеет тот же корпус, что и исходная функция

Method description

+0

Это будет работать, но не для моего приложения. Мне нужно более динамичное решение. Однако, спасибо. Я все равно продолжу это. – Christian4423

1

I добавлен обработчик события 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 для загрузки.

Смежные вопросы