2012-05-10 2 views
0

у меня есть этот скрипт в моем HTML формепосле запуска мыши, следующий делегат не работал

<button type="button" id="addUploadFile">Add Document</button>   
<input type="file" id="hiddenOpenFile" name="hiddenOpenFile" style="visibility:hidden;" /> 

<button type="button" id="button2">test</button> 

и Javascript скрипта на готовой функции

$("#addUploadFile").live('click', function() { 
     $('#hiddenOpenFile').trigger('click'); 
}); 

$("#hiddenOpenFile").live('change', function (event) { 
    alert(1); 
    $("#addbutton2").trigger('click'); 
}); 


$("#addbutton2").live('click', function() { 
     alert(2) 
}); 

проблема, в Internet Explore оповещения (2) не отображается, когда я выбираю любой файл. Он отлично работает в любом другом браузере.

+0

Это 'addbutton2'? или 'button2?' Я не вижу 'addbutton2' в HTML. – Joseph

+0

Извините, я неверно напечатал идентификатор. второй идентификатор кнопки - «addbutton2», но проблема все еще возникала. –

+1

Как я помню, проблема в том, что IE (IE8, работающий как IE7) не всегда корректно работает с селекторами jQuery. Попробуйте использовать селектор классов ('.') Вместо селектора id ('#'). Если он работает, а проблема связана с селекторами, и вы можете оставить использование селектора классов или создать собственный селектор. – Chizh

ответ

1

Вам не хватает точки с запятой.

Try:

alert(2); 

И вы должны изменить addbutton2 к button2. Без этого он даже не запустится в Chrome. Событие клика, которое вы запускаете, похоже, не срабатывает в IE. Использование специального события должно его исправить. Например:

$("#button2").trigger('gogogo'); 

А затем связываются с 'GOGOGO':

$("#button2").on('gogogo', function() { 
    alert(2); 
    }); 

Смотрите эту скрипку: http://jsfiddle.net/UfRUa/3/

+0

Я только что ошибочно использовал идентификатор. он все еще не работал на IE. u может попытаться запустить код по ссылке ur. alert (2) все еще не появился. –

+0

Какую версию IE вы используете? – Felix

+0

Я использую IE версию 9 –

0

Вы должны изменить второй идентификатор кнопки из button2 в addbutton2 File Uploader всплывающее окно apears, после нажатия кнопки addUploadFile. Выберите файл и закройте всплывающее окно.? В этом случае событие изменения hiddenOpenFile будет стрелять и после того, как addbutton2 нажмем событие

Он отлично работает:

<html> 
<head> 
<script src="../libs/jquery/1.4.2/jquery.min.js"></script> 
</head> 
<body> 
<button type="button" id="addUploadFile">Add Document</button>   
<input type="file" id="hiddenOpenFile" name="hiddenOpenFile" style="visibility:hidden;" /> 

<button type="button" id="addbutton2">test</button> 
<script> 
    $("#addUploadFile").live('click', function() { 
      $('#hiddenOpenFile').trigger('click'); 
    }); 

    $("#hiddenOpenFile").live('change', function (event) { 
     alert(1); 
     $("#addbutton2").trigger('click'); 
    }); 


    $("#addbutton2").live('click', function() { 
      alert(2); 
    }); 
</script> 
</body> 
</html> 

UPD:

Как я знаю, что $ .live() не поддерживает событие «изменения» в IE:

Прочитать комментарии к документу http://docs.jquery.com/Events/live

Попробуйте вместо этого использовать livequery?

+0

не работал над IE. –

+0

Прочтите обновленное сообщение, пожалуйста. –

+0

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