web-dev-qa-db-ja.com

送信する入力要素のタイプを変更できないのはなぜですか?

私はこの関数を呼び出しています:

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で)このエラーを受け取ります:

キャッチされない例外:タイププロパティは変更できません

回避策はありますか?

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

これによりタイプは変更されますが値は変更されないため、ボタンには「確認」と表示されます。

それを証明するためのフィドル: http://jsfiddle.net/qeUxP/

43
adeneo

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";
14
J. Bruni

それは最終的に機能しました、以下を見つけてみてください:

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

回避策は次のとおりです。

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

クリックイベントにバインドして、フォームのsubmitをクリックハンドラーで呼び出してみませんか?

3
davidethell

javascript:

function submit_button(){

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

  }

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

jquery:

function submit_button(){

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

   }

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

2
saidesh kilaru

回避策は、正しいタイプの要素を作成し、現在存在しているものを置き換えることです。

ただし、あなたの例では、<button>要素は、フォームの送信、ボタンとしてのレンダリングの目的を果たし、JavaScriptを必要とせずに実行できます。例:

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

次に、ボタンを再度有効にします。

$('confirm_button').removeAttr('disabled');
0
Rich O'Kelly