2016-09-05 5 views
0

マイJSFiddle hereSerializeObjectとSerializeArrayは、私がそこここにSOでこの程度の記事の負荷となっているが、なぜこれらの(SerializeObject /シリアル化/ SerializeArray())私は思ったんだけど知っているにconsole.log

に表示されません。私のコンソールには表示されません.log onclickの後。

HTML:

<form action="#" method="post" id="testform" name="testform"> 
      <input class="input_rid" type="text" name="rid" id="rid" value="" placeholder="rid" required> 
      <input class="input_recipient_id" type="text" name="recipient_id" id="recipient_id" value="" placeholder="recipient_id" required> 
       <select class="select_eml" name="email_type" id="email_type" required> 
        <option value="" selected="selected" disabled="disabled"> 
         Email type 
        </option> 
        <option value="Body">Body</option> 
        <option value="Body & Attachment">Body & Attachment</option> 
        <option value="Link">Link</option> 
        <option value="Internal Attachment">Internal Attachment</option> 
        <option value="External Attachment">External Attachment</option> 
        </select> 
       <select class="select_tcb" name="to_cc_bcc" id="to_cc_bcc"> 
        <option value="" selected="selected" disabled="disabled"> 
         To_CC_BCC 
        </option> 
        <option value="to">To</option> 
        <option value="cc">CC</option> 
        <option value="bcc">BCC</option> 
        </select> 
      <input class="input_sd" type="date" name="start_dte" id="start_dte" value="" placeholder="start_dte" required> 

      <input class="input_ed" type="date" name="end_dte" id="end_dte" value="" placeholder="end_dte"> 
      <input class="button small radius right inline" type="button" onclick="return test();" value="Save to Console Log"> 

</form> 

JS:

$.fn.serializeObject = function() 
{ 
    var o = {}; 
    var a = this.serializeArray(); 
    $.each(a, function() { 
     if (o[this.name]) { 
      if (!o[this.name].push) { 
       o[this.name] = [o[this.name]]; 
      } 
      o[this.name].push(this.value || ''); 
     } else { 
      o[this.name] = this.value || ''; 
     } 
    }); 
    return o; 
}; 


function test() { 
var v = $("#testform").serializeObject(); 
console.log(v); 
console.log($("#testform").serialize()); 
console.log($("#testform").serializeArray()); 
} 

答えて

1

ここでの問題は、テスト機能は、ウィンドウの負荷範囲内で宣言されていて、そのボタンをクリックすると、インタプリタは「できることです呼び出された関数を見つける。

window.test = function() { 
var v = $("#testform").serializeObject(); 
console.log(v); 
console.log($("#testform").serialize()); 
console.log($("#testform").serializeArray()); 
} 
+0

は[{でそれをカプセル化するが方法です、作業その一例を取得する$(ウィンドウ).on(「ロード」)範囲外の関数宣言を移動したり、単にグローバルに宣言する

}]? – Odinovsky

+0

IMHO、この問題に直面する最善の方法は、イベントを使用してボタンのクリックをキャッチしてから、関数を呼び出すことです。例えば。 $(要素).on( 'クリック'、テスト); – zangarmarsh

関連する問題