2017-01-25 10 views
0

У меня проблема с событием onchange. Он отлично работает на Chrome и FF, но не на IE. Вот код:onchange не работает на IE, но отлично работает на Chrome и FF

<div class="panel-body panel-default upload"> 
    <div class="form-group upload"> 
     {!! Form::open(array('url'=>'scriptUpload/upload','method'=>'POST', 'files'=>true, 'class' => 'fluid ui action labeled input')) !!} 
     <label for="project" class="col-sm-6 control-label">Elementary script</label> 

      <div class="control-group"> 
       <div class="controls input"> 
        <input id="files" type="text" class="input upload" readonly> 
         <label class="col-sm-5"> 
          <span class="btn btn-primary upload"> 
           Browse&hellip; <input name='elementaryScript[]' id='elementaryScriptId' type="file" style="display: none;" multiple onchange="isUploadPossible(this)"> 
          </span> 
         </label> 

       </div> 
      </div> 
     <div id="success"> 
      {!! Form::button('Upload', array('id' => 'submitButton', 'class'=>'btn btn-primary upload', 'onClick' => 'fileExists()', 'disabled'=>'true')) !!} 
      {!! Form::close() !!} 
     </div> 
    </div> 
</div> 

А вот функция JS, которая называется:

function isUploadPossible(elem) { 
    if (elem.value == "") 
     elem.getRootNode().getElementsByTagName('button').submitButton.disabled = true; 
    else 
     elem.getRootNode().getElementsByTagName('button').submitButton.disabled = false; 

} 

Так в основном, когда пользователь выбирает файлы, он должен сделать атрибут кнопки загрузки disabled в false.

Я прочитал здесь и там, что его нужно изменить на onclick, но я не могу, поскольку он должен быть запущен после того, как пользователь выбрал файлы для загрузки, и onclick будет уволен раньше.

EDIT: Я на самом деле произошло, чтобы эта ошибка:

Object doesn't support property or method 'getRootNode' 
+0

Какую ошибку он показывает? – Shubham

+0

Нет ошибки, кнопка просто остается открытой. И когда я использую отладчик, чтобы проверить, что происходит (не), я вижу, что функция JS никогда не вызывается. – Papple

+0

У меня действительно есть эта ошибка в консоли: 'Объект не поддерживает свойство или метод 'getRootNode'' – Papple

ответ

1

Ok, так что кажется, что getRootNode просто supported by Chrome and Opera до сих пор.

Найдено (очень) грязный способ сделать, но это работает на IE, Chrome и FF:

elem.parentElement.parentElement.parentElement.parentElement.parentElement.getElementsByTagName('button').submitButton;