2011-10-26 21 views
0

私は、フォームjqueryでグローバル変数に値を設定する方法は?

<form method="get" id="searchform" > 
    <input value="Search..." id="s" type="text"> 
    </form> 

とjQueryコード

<script language="javascript"> 
    var searchformValue; 
    $('#searchform').submit(function(){ 
     searchformValue = $('#s').val(); 
     return searchformValue; 
     }); 

</script> 

を持っていますが、私は関数の外

<script language="javascript"> 
    var searchformValue; 
    $('#searchform').submit(function(){ 
     searchformValue = $('#s').val(); 
     return searchformValue; 
     }); 
      alert(searchformValue); 

</script> 

を検索formvalueを警告するとき、それはunidentified.Whyを返します?

すべての解決策はありますか?

編集:関数はあなた

+0

あなたは値を初期化することができます。その場合は、それ以上定義されません。 – Xhalent

答えて

4

実行した後、私が提出した値でsearchformValueを持つようにしたい -

alert(searchformValue); 

を提出する関数が呼び出されませうとして(と呼ばれていませんがページのフォームが送信されるまで)、したがってsearchformValueの値は未定義です。

+0

ok.But私はこの方法でどのように値を設定できますか? –

+1

値はメソッド内で設定されますが、メソッドが呼び出されたときにのみ設定されます。私はあなたが達成しようとしていることが何であるかわからない - あなたはアラートボックスに何を表示したいのですか?ページが読み込まれたとき、またはフォームが送信されたときに警告ボックスを表示しますか? – ipr101

+0

私は変数に与えられた名前を推測しています。 **フォームから提出された値を**編集するだけですか? – Roman

0

イベントを処理する場合は、イベントのコールバックが機能するようにイベントを発生させる必要があります。変数がundefinedある間

したがって、あなたが持っているコードは、searchformValueを初期化フォームのsubmitイベントにコールバックを取り付け、その後、alert(searchformValue)ます。

+0

どうすればいいですか? –

1

コードを実行する前にalert()を呼び出しています。実際に表示する値が存在するように、ハンドラの最後またはそれ以降に呼び出す必要があります。

ここではグローバル変数は必要ありませんが、単純に 'var'を削除して1にしてください。 FYI、グローバル変数は悪です。

var searchformValue = "" 
+0

グローバル変数が私をnewtに変えました! – asawyer

+0

それは変わった、通常の副作用は時空の連続体の疣贅と時折の裂け目である... –

+0

まあ、それは良くなった。 – asawyer

0

変更

var searchformValue; 

あなたは右のそれをやっているが、提出するハンドラが呼び出されるまで、変数は値を与えられていません。これはあなたが望むものです、私は疑います。

0

予想通りこれは動作します:

var searchformValue; 
$('#searchform').submit(function(){ 
    searchformValue = $('#s').val(); 
    alert(searchformValue); 

    return searchformValue; 
}); 
alert("This will alert immediately"); 

.submit()がブロックされていません。フォームが提出されるのを待ってから次のステートメントに移ります。あなたが提出した後に起こりたいものは、コールバック関数に入る必要があります。

+0

私はsearchformValueをtwitter pluginに挿入しようとしています。そのtwitterプラグインはsearchformVlaueに従ってポップアップします。 –

関連する問題