2016-08-19 8 views
0

ボタンをクリックしたときにフォームから変数を取得して、他の機能を処理する必要があります。ボタン機能内のJQuery変数

これはエラーです:

jquery.min.js:6 Uncaught RangeError: Maximum call stack size exceeded

はここでjQueryの:

$(document).ready(function(){ 
var value; 
var callMe = function(){ 
    value = document.getElementsByClassName("instr"); 
} 

$('#container :button').click(function(event){ 
callMe(); 
doAjax(value); 
}); 

}); 

詳細はJQuery。それが必要な場合はさらに多くのことがあります。ここで

function doAjax(value) { 
    //var value , ajax; 
    var ajax;  
    //value = 'CCBOT'; // This variable works when hard coded. 

    //Pass the values to the AJAX request and specify function arg for 'done' callback 
    ajax = theAjax(value); 
    ajax.done(processData); 
    ajax.fail(function(jqXHR, textStatus, errorThrown) { 
      //Output error information 
    }); 
} 

は、HTML形式です:

<div id="container" class="center"> 
<form> 
<label for="instr">Select Instrument</label> 
<select name="instr" id="instr" class="instr" value=""> 
<option value="WHCBOT">WHEAT-SRW - CHICAGO BOARD OF TRADE</option> 
<option value="WHMGE">WHEAT-HRSpring - MINNEAPOLIS GRAIN EXCHANGE</option> 
<option value="CCBOT">CORN - CHICAGO BOARD OF TRADE</option> 
<option value="OCBOT">OATS - CHICAGO BOARD OF TRADE</option> 
</select>  
<input id="button" type="button" value="Get Chart"> 
</form> 
<div id="response-container"> 
The chart will appear here.. 
</div> 
</div> 
+1

「theAjax」とは何ですか? –

+0

processData関数も提供してください。 – Sergeon

+0

document.getElement ....の出力は値ではなく、要素を返します。 $( '。instr')を試してください。代わりにval() – Developer

答えて

1

あなたのハードコードのテストは、文字列値、'CCBOT'です。

あなたの "ライブ" の試験は、HTMLCollection document.getElementsByClassName('instr')です。 HTMLCollection以来

は、jQueryのが期待されているものは非常に明確ではありません予期しない動作結果や成果は、jQueryの深さの中に深いから来未処理エラーです。

jQueryは型の不一致を特にうまく処理しません(HTMLと同じように)。しかし、最終的には適切な入力でうまくいくので、jQueryからエラーが発生した場合はチャンスがあります。あなたはそれを何か間違って渡した。

はもしかして:

value = $(".instr").val(); 

+0

パーフェクト、ありがとうございます。そして説明に感謝します。私は「警告」をしたときに「HTMLCollection」と言っていましたが、それは何か分かりませんでした。まだ分​​かりませんが、これは将来私を助けます。再度、感謝します。 –

関連する問題