Onchange в attachevent срабатывает не с первого раза.
Вот собственно код
document.getElementById("apslaed").attachEvent("onclick",function() { var newElem = document.createElement("div"); newElem.id = "sizeslide"; newElem.innerHTML = "<form id=\"fileload\" action=\"#\" method=\"post\" enctype=\"multipart/form-data\"><input type=\"file\" name=\"anyfile\" id=\"inpField\"/></form>"; document.body.insertBefore(newElem, document.body.firstChild); document.getElementById("inpField").click(); document.getElementById("inpField").attachEvent("onchange", function(){alert("34343");}); }); Необходимо выполнить функцию после выбора пользователем файла, из динамически созданной формы. Само событие onchange в данном случае работает, если файл выбрать повторно, но все должно происходить сразу. Помогите, пожалуйста, разобраться. |
:) Так проще
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> </head> <body> <div id="apslaed">Клик</div> <script type="text/javascript"> function Onchange(Th){ alert('3434'); alert(Th.value) } document.getElementById("apslaed").attachEvent("onclick",function() { var newElem = document.createElement("div"); newElem.id = "sizeslide"; newElem.innerHTML = "<form id=\"fileload\" action=\"#\" method=\"post\" enctype=\"multipart/form-data\"><input type=\"file\" name=\"anyfile\" id=\"inpField\" onchange=\"Onchange(this)\"/></form>"; document.body.insertBefore(newElem, document.body.firstChild); }); </script> </body> </html> |
Спасибо за ответ, но мне бы хотелось реализовать так, чтобы все события можно было обрабатывать через одну функцию, как это сделано во флеймворках. И соответственно узнать причину о том, почему не работает и найти решение именно через attachevent. Кроме прочего, через attachevent я наверное могу переназначить функцию на данное событие.
|
Еще вот так работает
document.getElementById("inpField").onpropertychange = function(){} Может какое-либо другое событие необходимо использовать в attachEvent, или в чем может быть причина? |
Цитата:
platedz, :) А чем хуже в моём Варианте ? Переопределить просто функцию Onchange(Th) для данного события *Просто к инфе для размышлений |
Цитата:
Вообще в этом плане мне кажется использование addEventListener и attachEvent оказывается не совсем удобно, а в данном случае и вовсе неудобно. Более логичным возможно использовать элемент[событие] = функция. |
Цитата:
Onchange=function (Th) { alert('ИИ'); } |
Цитата:
|
platedz,
Цитата:
if (FirstCreateForm){ var Onchange = function (Th){ alert('3434'); alert(Th.value) } } else { var Onchange=function (Th) { alert('ИИ'); } } Ну или вообще массив по ключу формы |
Спасибо за совет. Вообще я отказался пока от addEventListener и attachEvent. Честно говоря не очень понимаю, зачем они нужны и в чем их преимущество перед On+событие. Может мне кто-нибудь объяснит. Буду крайне признателен.
|
Часовой пояс GMT +3, время: 20:16. |