2016-03-29 5 views
0

私はこのコードを持っています私はこれを置く:トリガーは

これは実際には動作しますが、これを修正する方法はわかりません。予備試験では

+0

のsetTimeout使用することができます 'active_menu'は何ですか?それは非同期関数ですか? –

+0

@MikeCはい、これは非同期関数ですが、それは実際の問題ではありません:/ –

+0

'#btbuscar'でクリックイベントを設定していますか?送信イベントやものはまだセットアップされていないように聞こえるからです。 'alert'をすると、非同期関数が完了することができます。 –

答えて

0

、このコードは動作します...

<form id="myForm" action="#" method="POST"> 
    <input type="text" id="buscar"/> 
</form> 
<div id="btbuscar"> 
    help 
</div> 


$(document).ready(function() { 
    $('#buscar').val(localStorage.getItem("busqueda")); 
    $("#btbuscar").bind('click', function(evt){ 
    $("#myForm").submit() 
    }) 
    $("#myForm").bind('submit', function(evt){ 
    alert("form submitted") 
    }) 
    $('#btbuscar').trigger('click'); 
}); 

元のボタンのリスナーの割り当てを見ずに、これは正確に何をしたい場合は、私が言うことはできませんが、リスナーが適切に設定されて、このメソッドは動作します。

+0

私はアラートを表示したくないので、私はクリックイベントがドキュメント準備機能の中でトリガされ、検索を実行するために送信イベントが発生します。私はトリガーが働いた唯一の方法だったのでアラート機能を掲示しましたが、アラートを表示したくありません。 –

+0

気にしないで、 '$("#search_tour ")で時々動作します。)(提出; '内部の準備ができて、DOM、これは形式です: <フォームID = "search_tour" 名前= "search_tour">私は、すぐにページがロードされたフォームを送信したい

。 –

+0

これは私の答えを達成したものです –

-1

タイムリーな問題があります。 javascriptを実行すると、次のようになります。

$('#btbuscar').trigger('click'); 

HTML要素がまだ存在しないため、送信は行われません。

アラートはJavaScriptの実行を一時停止します。したがって、[OK]をクリックすると、HTML要素#btbuscarが既にページにロードされています。

それは安全ではないのですが、あなたは

$(document).ready(function() { 
    active_menu('mn_tours'); 
    setTimeout(function(){ 
     $('#buscar').val(localStorage.getItem("busqueda")); 
     $('#btbuscar').trigger('click'); 
    },1000); 
}); 
+0

ページが読み込まれたときにボタンをクリックするかフォームに送信する別のソリューションですか? –