私はこの関数を呼び出しています:
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で)このエラーを受け取ります:
キャッチされない例外:タイププロパティは変更できません
回避策はありますか?
function submit_button(button_id){
$('#' + button_id).prop('type', 'submit');
}
これによりタイプは変更されますが値は変更されないため、ボタンには「確認」と表示されます。
それを証明するためのフィドル: http://jsfiddle.net/qeUxP/
JQueryがtype属性を変更することを許可しないのはなぜですか?
Internet Explorerで問題が発生するため。
「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";
それは最終的に機能しました、以下を見つけてみてください:
$("#confirm_button").each(function ()
{ this.type = "number"; });
回避策は次のとおりです。
$('<input name="confirm_button" id="confirm_button2" type="submit" value="Confirm" class="login_btn" />').insertAfter('#confirm_button');
$('#confirm_button').remove();
クリックイベントにバインドして、フォームのsubmitをクリックハンドラーで呼び出してみませんか?
function submit_button(){
var btn=document.getElementById('button_id');
btn.setAttribute('type', 'submit');
}
================================================== ====================
function submit_button(){
$('#' + button_id).prop('type', 'submit');
}
================================================== ====================
回避策は、正しいタイプの要素を作成し、現在存在しているものを置き換えることです。
ただし、あなたの例では、<button>
要素は、フォームの送信、ボタンとしてのレンダリングの目的を果たし、JavaScriptを必要とせずに実行できます。例:
<button name="confirm_button" id="confirm_button" type="input" value="Confirm" class="login_btn" disabled />
次に、ボタンを再度有効にします。
$('confirm_button').removeAttr('disabled');