2016-10-31 6 views
0

私はsign_upフォームを作成しています。ユーザーが最初に知っていることは、場所がフォームの他のフィールドを埋めることです。ユーザーがJqueryでnavigator.geolocationを許可またはブロックするまで、他のすべての機能停止を行う方法はありますか?

しかし、難しさは、ウェブサイトが場所の許可またはブロックを知りたいというメッセージが届いたときです。他の機能はまだ動作します。私はそのユーザーがフォームを記入して、許可するかブロックするかを選択するまで他の場所をクリックすることはできません。しかし、私のコードでは、ユーザーは何も選択せずに何かをすることができます。

場所のjqueryはこのようなものですが、機能は異なっています。

$(document).ready(function() { 

    if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction); 
    } 

    //Get the latitude and the longitude; 
    function successFunction(position) { 
    var lat = position.coords.latitude; 
    var lng = position.coords.longitude; 
    } 

    function errorFunction() { 
    alert("You have blocked us to know your location . You can't be a journalist without that ..."); 
    window.location.href = 'index.php'; 
    } 

    $(".input").change(function() { 
    log(this); 
    }); 

    function log(element) { 
    var text = element.val(); 
    console.log(text); 
    } 

    $('.button_sign').click(function() { 
    log(this); 
    log('.input'); 
    alert(lat); 
    alert(lng); 
    }); 

}); 

私のHTMLは、だから私の本当に問題は、ユーザーの場所が遮断または許可されるまで、他のすべての機能を停止することです

<form> 
      <div class="field"> 
      <input type="text" class="input" id="name_register" placeholder="Name"> 
      <div id="name_error" class="error_field"></div> 
      </div> 
      <div class="field"> 
      <input type="email" class="input" id="email_register" placeholder="Email"> 
      <div id="email_error" class="error_field"></div> 
      </div> 
      <div class="field"> 
      <input type="password" class="input" id="password_register" placeholder="Password"> 
      <div id="pass_error" class="error_field"></div> 
      </div> 
      <div class="field"> 
      <input type="text" id="date_register" class="input" placeholder="DOB"> 
      <div id="date_error" class="error_field"></div> 
      </div> 
      <p class="agree"><input type="checkbox" name="checkbox" value="check" id="agree_register" checked/> I have read and agree to the Terms and Conditions and Privacy Policy</p> 
      <a class="button_sign" id="sign_up">Sign up</a> 
       </form> 

のように見えます。そして、他の機能の前にまず場所を尋ねること。

+0

これは多少役立つかもしれない:http://stackoverflow.com/questions/10077606/check-if-geolocation-was-allowed-and-get-lat-lon – callback

+0

@Callbackはありません、それはその –

答えて

0

ブール値を使用して、アクセスがまだ許可されているかどうかを保存できます。このようなことを試してみてください。

var didMakeLocationDecision = false; 

$(document).ready(function() { 
    if (navigator.geolocation) { 
    didMakeLocationDecision = true; 
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction); 
    } 

    //Get the latitude and the longitude; 
    function successFunction(position) { 
    var lat = position.coords.latitude; 
    var lng = position.coords.longitude; 
    } 

    function errorFunction() { 
    alert("You have blocked us to know your location . You can't be a journalist without that ..."); 
    window.location.href = 'index.php'; 
    } 

    $(".input").change(function() { 
    log(this); 
    }); 

    function log(element) { 
    var text = element.val(); 
    console.log(text); 
    } 

    $('.button_sign').click(function() { 
    log(this); 
    log('.input'); 
    alert(lat); 
    alert(lng); 
    }); 

}); 

$(document).click(function(e) { 
    if (e.button == 0 && !didMakeLocationDecision) { 
     e.preventDefault(); 
     errorFunction(); 
    } 
}); 
+0

のようではありません'Uncaught ReferenceError:didMakeLocationDecisionが定義されていません'というエラーが発生しています。それは働いていません@TheValyreanGroup –

+0

その変数の宣言を '.ready'関数の外に移動します。私はコードを編集しました。 – TheValyreanGroup

+0

まだ動作していません。私はまだ入力をクリックしてすべてを行うことができます。 –

関連する問題