jQuery removeAttr ('type') не работает

Моя проблема очень проста

$('#button').removeAttr('type');

вызывает ошибку на firebug

type property can't be changed

У меня есть 2 вопроса:

How to get around this? Is there a reference with a list of properties that can't be changed?

Спасибо

EDIT

Что я хочу сделать, это:

Запретить кнопке отправку формы.

Примечание: моя кнопка включена в качестве HTML-шаблона, код формы не доступен для меня.
Что-то вроде:

include 'form.php';
include 'buttons.php';

где у меня есть контроль только наbuttons.php

 Darin Dimitrov14 июн. 2012 г., 13:22
Поскольку вы не можете изменить тип элемента, вам придется заменить его новым элементом.
 user110692514 июн. 2012 г., 14:04
Хорошая идея спросить о вашей актуальной проблеме с самого начала. УвидетьXY Problem
 ilyes kooli14 июн. 2012 г., 13:20
половина ответа, еще список :)
 mgraph14 июн. 2012 г., 13:19
у тебя есть ответtype property can't be changed

Ответы на вопрос(3)

Решение Вопроса

input& APOS; stype в IE (& lt; 9?) после того, как он был вставлен в DOM. Из-за этого jQuery вызывает ошибку для всех браузеров.

Из источника:

    set: function( elem, value ) {
            // We can't allow the type property to be changed (since it causes problems in IE)
            if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
                jQuery.error( "type property can't be changed" );

There are no other cases Я знаю о (или JQuery знает), и как обойти это во многом зависит от того, что вы пытаетесь сделать в первую очередь. Попробуйте создать новый элемент с другим типом и использовать его, например.

Редактировать: чтобы запретить кнопке отправлять форму, вы можете использовать:

$("#button").click(function(e){
    e.preventDefault();
});

Или (кредит Тим Даун):

$("#button").prop("disabled", true);

Чтобы предотвратить отправку формы любым способом, вы можете использовать:

$("#form").submit(function(e){
    e.preventDefault();
});
 ilyes kooli14 июн. 2012 г., 14:37
Отключение кнопки невозможно, потому что к ней будет привязана другая функция
 14 июн. 2012 г., 13:34
@TimDown действительно и делает кнопку недоступной через вкладки и т.д. :) спасибо за идею
 14 июн. 2012 г., 13:31
Установка кнопки на отключение может показаться лучшим вариантом. Это проще и обеспечивает обратную связь с пользователем.$("#button")[0].disabled = true;
 14 июн. 2012 г., 16:49
Не возвращает ли false также препятствует отправке формы? Как в форме отправить и нажмите кнопку. Являетсяe.preventDefault() лучше чем-то?
 14 июн. 2012 г., 17:21
@ Свист, когда тыreturn false из обработчика событий jQuery, он будет вызыватьe.preventDefault() так же какe.stopPropagation(), Из источника jQuery:if ( ret === false ) { event.preventDefault(); event.stopPropagation(); }

Если вы используете jQuery & lt; 1,6 сделай это:

$("#button").attr("disabled", 'disabled');

Если вы используете jQuery 1.6+:

$("#button").prop("disabled", true);

Смотрите этот вопрос:.prop () против .attr ()  для справок почему.

$('#button').replaceWith('<input type="text" value="text"/>');

или использоватьevent.preventDefault()

 25 июл. 2012 г., 00:24
Отличное предложение - и хорошая альтернатива простому изменениюtype - и (хотя это может или не может быть преимуществом) - это также удалит любые другие обработчики кнопок.

Ваш ответ на вопрос