Спасибо всем за ответы! Я как раз и с button вариант попробовал.
Мне div нужен как контейнер. В таком div свой контрол нарисован. С рисунками и со своей логикой. И ему нужно фокус принимать. И отдавать конечно тоже.
Input не подходит потому что не контейнер. Или я ошибаюсь?
Заменил input на button. Вот так:
<script type="text/javascript">
function dofocus(self) {
document.body.appendChild(document.createTextNode('focus('+self.name+'), '))
}
function doblur(self) {
document.body.appendChild(document.createTextNode('blur('+self.name+'), '))
}
</script>
<form action='/'>
<table>
<tr>
<td>
<input type="file" name='file1' onfocus='dofocus(this)' onblur='doblur(this)'>
<button name='button1' onfocus='dofocus(this)' onblur='doblur(this)'>Button1</button>
</td>
</tr>
<tr>
<td>
<input type="file" name='file2' onfocus='dofocus(this)' onblur='doblur(this)'>
<button name='button2' onfocus='dofocus(this)' onblur='doblur(this)'>Button2</button>
</td>
</tr>
<tr>
<td>
<input type="file" name='file3' onfocus='dofocus(this)' onblur='doblur(this)'>
<button name='button3' onfocus='dofocus(this)' onblur='doblur(this)'>Button3</button>
</td>
</tr>
</table>
</form>
И снова события onblur нет у <input type=file>.
Почему он нужен? <input type=file> на странице невидим и сам находится в div.
По-сути этот div - стилизованная кнопка для загрузки файлов.
Поэтому что бы его "правильно" нарисовать нужно событие onblur <input type=file>.
А его в Opera почему-то нет.