Почему я не могу изменить тип входного элемента для отправки?

Я вызываю эту функцию:

function submit_button(button_id){
    $('#' + button_id).attr('type', 'submit');
}

чтобы сделать эту кнопку type = submit вместо кнопки.:

<input  name="confirm_button" id="confirm_button" type="button" value="Confirm" class="login_btn" />

и я получаю эту ошибку (в firefox):

uncaught exception: свойство type не может быть изменено

Есть ли какая-нибудь работа вокруг?

Ответ 1

function submit_button(button_id){
    $('#' + button_id).prop('type', 'submit');
}

Помните, что это изменяет тип, но не значение, поэтому кнопка все равно будет читать "подтвердить".

Попробуйте доказать это: http://jsfiddle.net/qeUxP/

Ответ 2

Почему jQuery не позволит вам просто изменить атрибут type?

Потому что это вызывает проблемы в Internet Explorer.

Дополнительная информация: изменить тип поля ввода с помощью jQuery

"Прямо из источника jQuery":

// We can't allow the type property to be changed (since it causes problems in IE)
if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
    throw "type property can't be changed";

Ответ 3

Здесь обходной путь:

$('<input name="confirm_button" id="confirm_button2" type="submit" value="Confirm" class="login_btn" />').insertAfter('#confirm_button');
$('#confirm_button').remove();

Ответ 4

Наконец-то это сработало, попробуйте найти следующее:

   $("#confirm_button").each(function () 
   { this.type = "number"; });

Ответ 5

Почему бы просто не привязать событие click и вызвать форму submit в обработчике кликов?

Ответ 6

JavaScript:

function submit_button(){

      var btn=document.getElementById('button_id');
      btn.setAttribute('type', 'submit');

  }

=============================================== =======================

Jquery:

function submit_button(){

 $('#' + button_id).prop('type', 'submit');

   }

=============================================== =======================

Ответ 7

Обходной путь состоит в том, чтобы создать элемент правильного типа и заменить текущий exisitng.

Однако в вашем примере элемент <button> может служить цели отправки формы, рендеринга в виде кнопки и не требует какого-либо javascript для этого, например:

<button name="confirm_button" id="confirm_button" type="input" value="Confirm" class="login_btn" disabled />

Затем, чтобы снова включить кнопку:

$('confirm_button').removeAttr('disabled');