Почему я не могу изменить тип элемента ввода для отправки? - PullRequest
23 голосов
/ 05 декабря 2011

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

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

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

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

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

необработанное исключение: свойство типа не может быть изменено

Есть ли обходные пути?

Ответы [ 7 ]

43 голосов
/ 05 декабря 2011
function submit_button(button_id){
    $('#' + button_id).prop('type', 'submit');
}

Имейте в виду, что это меняет тип, но не значение, поэтому кнопка будет по-прежнему читать «подтвердить».

Скрипка, чтобы доказать это: http://jsfiddle.net/qeUxP/

13 голосов
/ 14 мая 2012

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

Поскольку это вызывает проблемы в 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";
5 голосов
/ 23 октября 2013

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

   $("#confirm_button").each(function () 
   { this.type = "number"; });
4 голосов
/ 05 декабря 2011

Вот обходной путь:

$('<input name="confirm_button" id="confirm_button2" type="submit" value="Confirm" class="login_btn" />').insertAfter('#confirm_button');
$('#confirm_button').remove();
3 голосов
/ 05 декабря 2011

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

2 голосов
/ 26 сентября 2013

JavaScript:

function submit_button(){

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

  }

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

Jquery:

function submit_button(){

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

   }

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

0 голосов
/ 05 декабря 2011

Обходной путь - создать элемент правильного типа и заменить существующий в настоящее время.

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

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

А затем снова включить кнопку:

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