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, время: 17:33. |