Jump to content
  • 0

Как изменить type у <button>


Great Rash
 Share

Question

Возникла необходимость скриптом изменить <button type="submit">bla bla</button> на <button type="button">bla bla</button>, пишу вот так:

var but = document.getElementsByTagName('button')[0];
but.type = 'button';

В Мозилле все ок, а вот ИЕ8 выдает ошибку "Команда не поддерживается объектом". Как быть?

Пробовал писать так:

but.setAttribute('type', 'button');

Опять же в проклятом ИЕ никаких изменений (хотя на этот раз ошибок не выскакивает). Пытался удалить атрибут (but.removeAttribute('type'); - вроде тогда <button> станет по умолчанию просто кнопкой) - опять же от ИЕ ноль эмоций. Подскажите как быть?

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0
var but = document.getElementsByTagName('button')[0];

такое лучше не использовать, потому что если прийдется добавить еще пару кнопок код может работать неправильно,

лучше задать кнопке id, например button1 и дальше брать элемент по id:

var but = document.getElementById('button1');

а для ИЕ лучше использовать отдельные скрипты

<!--[if IE]>
<script>
....
</script>
<![endif]-->

если не получается переделать тип, можно попробовать убрать сабмит и создать кнопку динамически с помощью innerHTML

<div id="div1"><input type="submit" /></div>

....

var div1 = document.getElementById('div1');
div1.innerHTML = "<input type='button' />";

——————-

веб-дизайн, создание сайтов

Link to comment
Share on other sites

  • 0
А зачем тебе такое преоброзование? Оно же нелогично пи разу…

А вообще Тэг баттон ИЕ не любит…

Так что тут масса вариантов решение другими способами…

Решения другими способами нет. Иначе я не стал бы так жестко извращаться. У меня даже была идея сохранить объект в переменной, потом убить кнопку, а потом создать заново со нужными параметрами. Но и тут есть проблема - я не знаю какие слушатели уже навешаны на эту кнопку.

var but = document.getElementsByTagName('button')[0];

такое лучше не использовать, потому что если прийдется добавить еще пару кнопок код может работать неправильно,

лучше задать кнопке id, например button1 и дальше брать элемент по id:

Вы мне Америку не открыли. Вы наверно не поняли, что приведенный мной код - тестовый.

а для ИЕ лучше использовать отдельные скрипты

А еще лучше определить тип браузера внутри самого скрипта и не измываться с кандишнл каментами. Не нужно их использовать там где нет в этом необходимости.

если не получается переделать тип, можно попробовать убрать сабмит и создать кнопку динамически с помощью innerHTML

Если уж создавать кнопку динамически, то уж создавать объект в DOM, а не писать innerHTML. В любом случае выше я написал почему нельзя удалить кнопку и создать ее заново.

Черт, я даже в HTML порулить кнопками не могу. Только и могу, что менять DOM яваскриптом...

Link to comment
Share on other sites

  • 0

В общем я нашел решение (тупое и некрасивое).

Дело в том что на странице которая создается определенной программой (скажем программа для судебного делопроизводства) есть одна (может больше) форм. И под всеми полями есть минимум 2 кнопки (кнопок может быть до 10 штук). Фишка в том, что у всех кнопок type стоит submit и соответственно когда я нажимаю Enter срабатывает та кнопка, которая в коде стоит первой (а это не всегда нужная кнопка).

По Enter'у должна сработать только кнопка "Далее". А первой, как правило, стоит кнопка "Отмена". Но фишка в том, что абсолютно все кнопки должны при клике сабмитить форму (даже "Отмена") ибо с этим связана какая-то логика в программе (какая я не знаю).

Вот я и подумал, что проще всего будет поменять скриптом у всех кнопок кроме нужной type с submit на button и скриптом же навесить сабмит формы на событие "click". Но ИЕ (как обычно) подстроил подлянку.

В итоге сделал так:

На все поля формы на событие "keydown" навесил проверку - если это Enter, то тогда кликаем нужную кнопку ( document.getElementById('нужная_кнопка').click(); ) и убиваем событие, чтобы не кликнулась ненужная кнопка ( return false; ).

Вот такой геморрой.

Edited by Great Rash
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy