Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Что за неведомая ... input type="image" ? (https://javascript.ru/forum/dom-window/50791-chto-za-nevedomaya-input-type%3D-image.html)

kostyanet 11.10.2014 18:59

Что за неведомая ... input type="image" ?
 
Фактура, сначала с попсового сайта

Цитата:

Tip: You can also access an Input Image object by searching through the elements collection of a form.
http://www.w3schools.com/jsref/dom_obj_input_image.asp

Забавно что они же сами пишут будто искать такой объект надо по id.

На академическом сайте про такой объект я вообще ничего не нашел, есть только про элемент http://www.w3.org/TR/html-markup/input.image.html

Забавно что они не раскрывают что такое выбор координат, удалось узнать у микрософтов, забавно что в заметках:

Цитата:

The x-coordinate is submitted under the name of the control with .x appended, and the y-coordinate is submitted under the name of the control with .y appended. Any value property is ignored.
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Вопрос такой: этот тип должен быть элементом формы, или как сделать чтобы он стал элементом формы? То есть чтоб входил в массив form.elements.

Второй вопрос. Элемент submit и событие submit и метод submit() это эквипенисуально, или чем они различаются? Допустим у меня есть кнопка submit, но я ж ее не ищу чтобы повесить на submit запрет submit().

Как только я начал контролировать эти сабмиты в js, они меня просто заколебали.

Насчет input type="image". Инстансь класса для форм в php умеет делать только input'ы и маленько label. Если ее научить делать все остальное это будет неконтролируемый тего-генератор - у меня такой уже есть, гавно получается как не крути.

danik.js 11.10.2014 19:34

Чувак, ты с этой дискуссией опоздал лет эдак на пять ))
Вот тут такому же чудиле не спалось спокойно. Короче не включили в elements хз почему. Поздняк уже метаться. Мож забыли, мож забили, мож ненужно никому было.

Цитата:

Сообщение от kostyanet
Tip: You can also access an Input Image object by searching through the elements collection of a form.

Ну ошибочка у них, бывает. Я вобще тому сайту не особо доверяю.

Второй вопрос не понял. Ты не видишь разницу между сущностями "событие", "метод" и "элемент"?

danik.js 11.10.2014 19:36

Я вообще забыл что такой элемент есть)
Единственное применение, которое я ему видел - это замена кнопки submit, когда css не в моде был.

kostyanet 11.10.2014 20:38

Надо тумбу сделать для селфи, не в подвале формы куда js валит тумбы на канвасе, а в уголоке справа. В силу особенностей упомянутого класса я подумал что есть же такой инпут как image и приделал его ничтоже сумняще. Сую ему src из метода генерации тумб в подвале - он показывает, все красиво. Но оказалось что он внаглую отправляет форму, не элемент и вообще никому нах не нужен - никакой считай инфы нет.

Придется заменять на img из js. Все равно из value инпута file файл х покажешь. То есть без js тумбы не будет, а там такая система чтоб и с js и без js работало эквипенисуально.

kostyanet 11.10.2014 20:44

С ним, с image, еще такой прикол вышел. Инлайн я прописал onclick на щелчок скрытого file и в финале return false. А раньше был сделан переход на следующее поле по Ентеру - как в екзеле. Так эта сучара начала тыкать file по Ентеру. Я воткнул все какие вспомнил события - onkeyup, onkeypress... на return false - пофиг. Жмет на file и все. То есть по щелчку, в то время как клава щелкает только акустически. Видать где-то субмит его пролезает все-таки.

Забыл отметить контекст - он на стороне клиента. Юзер выбирает файл, картинку, из нее делается тумба. В подвале формы, в рамке Файлы. Там подпись - имя файла, размер, дата. То есть в селфи такое не воткнешь. С другой стороны можно и не втыкать - когда с подвала все успешно загрузится, тогда и воткнется с сервера сразу.

kostyanet 11.10.2014 20:53

Цитата:

Сообщение от danik.js
Второй вопрос не понял. Ты не видишь разницу между сущностями "событие", "метод" и "элемент"?

Я ее не вижу в кодах.

input type="submit"

this.form.submit()

form.addEventListener('submit'

Если бы я нашел кнопку и повесил на нее, так я не ищу, стало быть input вызывает form.submit() это метод который поджигает событие submit. Та вот, если я это событие затушил - никто не может его поджечь без моего согласия. А image, выходит, может.

Ну есть если у меня 100500 кнопок submit - я же имею право носить желтые штаны, или как я 100500 раз проконтролирую зарождение события? По-моему надо всего 1 раз. Но image - кладет. Внатури про него забыли. Странно. Полезная штука. Типа картинки в своем форменном домене.

kostyanet 11.10.2014 21:13

Приколы продолжаются. Никаких координат хрень не передает. В запросе ее поля нет вообще. Но форму субмитит, поскольку есть name. Ладно, придется ликвидировать пережиток.

danik.js 11.10.2014 21:19

Цитата:

Сообщение от kostyanet
input вызывает form.submit() это метод который поджигает событие submit.

Ну ща потестил. Выводы такие:
метод submit() ничего не вызывает. Просто сабмитит форму.
Клик по кнопке вызывает событие submit формы и последующую отправку.
Клик по image - то же самое.

Нажатие enter в текстовом поле - эмулирует клик по submit-кнопке.

kostyanet 11.10.2014 21:39

Цитата:

Сообщение от danik.js
метод submit() ничего не вызывает. Просто сабмитит форму.

Это общий порядок действия js - они не жгут события элементов модели документа. Иначе, как это было в VB - охренеешь. Там если чекбокс ткнул из кода - сработает его функция.

Цитата:

Сообщение от danik.js
Клик по кнопке вызывает событие submit формы и последующую отправку.

Типа before_submit. Я понял почему image отправляет форму, потому что стоит проверка - если this.disabled то фигвам. Дизаблит его валидация. Как только все чики-пуки, дизаблед снимается и можно отправлять. А image не был дизаблед, но прилетал как this. Ну и все, я сам тупой.

kostyanet 12.10.2014 11:19

Заменил image на img и сразу же получил плюху:

this.form is undefined

а ведь так все было красиво, и одновременно уродски.

Когда html5 обогатил форму новыми тегами и атрибутами я подумал что форма начинает обретать форму нормального такого окна приложения, со всем своим собственным барахлом. В которое записал и image - должны же быт у формы свои картинки, которые в коллекции и с которых this.form и все такое. Облом.


Часовой пояс GMT +3, время: 10:10.