2016-04-15 10 views
0

上の入力フィールドに入力します。は、私は次のよう<code>HTML</code>フォームを持っているフォーム提出

latlongを取得するための関数は、JavaScriptです。値(jsjQueryはOKです)を記入して、ロジックを続行するための最もreasonalbe方法だろう何

function startStopTimerSubmit(){ 

    navigator.geolocation.getCurrentPosition(foundLocation, noLocation); 

} 

function foundLocation(position){ 

    var lat = position.coords.latitude; 
    var long = position.coords.longitude; 
    document.getElementById('latitude').value = lat; 
    document.getElementById('longitude').value = long; 

} 

function noLocation() 
{ 
    alert('Could not find your location. Please, try again.'); 
} 

ご迷惑をおかけして申し訳ございません。

+0

は悪い習慣です...のようなのようなもののようなものをしたいと思います。 –

+0

正直でありがとう。これは更新されました。しかし、これを解決する適切な方法は依然として問題です。 – WpDoe

+0

@MilindAnantwar - いいえ、そうではありません。これは、スコープに使用されるJSの中心的な機能です。 – Quentin

答えて

2

これを行うには良い方法はありません。

getCurrentPositionが非同期であるので、それを行うための唯一の方法は、に次のようになります。デフォルトの動作

  • トリガーを提出非同期機能
  • がコールバック
  • トリガーでフィールドに入力し

    1. 防止JavaScriptを使用したフォーム提出

    簡単に試してみるとoページがロードされたときにフィールドにデータを入力し、フォームが入力されるまでにデータがそこに入るようにします。

  • 0

    ネストされた機能を続行する前に、フィールドにデータが入力されているかどうかを確認できます。これは、別の関数内で関数を定義する

    function submit() { 
     
        var latField = $('.lat-field'); 
     
        
     
        getLatLng(function(lat, lng) { 
     
         latField.val(lat); 
     
         latField.hasValue = true; 
     
         submit(); //call submit again now value has been populated 
     
        }); 
     
        
     
        //dont proceed if value has not been set 
     
        if(!latField.hasValue) return; 
     
        
     
        //Your standard functionality here 
     
    }

    関連する問題