如何让所有其他功能停止,直到用户允许或阻止 Jquery 中的 navigator.geolocation?
Posted
技术标签:
【中文标题】如何让所有其他功能停止,直到用户允许或阻止 Jquery 中的 navigator.geolocation?【英文标题】:How to make all other function stops till user allow or block the navigator.geolocation in Jquery? 【发布时间】:2016-10-31 15:01:09 【问题描述】:我正在制作注册表格,用户首先让我们知道位置,然后填写表格的其他字段。
但是困难来了,当消息来了,网站想知道位置允许或阻止。其他功能仍然有效。我希望该用户无法填写表格并单击其他任何地方,直到他/她选择是允许还是阻止。但在我的代码中,用户可以做任何事情而无需选择任何东西。
我的位置查询是这样的,但功能不同。
$(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>
所以我真正的问题是停止所有其他功能,直到用户位置被阻止或允许。并且询问位置应该在任何其他功能之前完成。
【问题讨论】:
这可能有点帮助:***.com/questions/10077606/… @callback 不是这样的 【参考方案1】:您可以使用布尔值来存储他们是否已允许访问。试试这样的。
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();
);
【讨论】:
Error iscoming 'Uncaught ReferenceError: didMakeLocationDecision is not defined'。它不工作@TheValyreanGroup 将该变量的声明移到.ready
函数之外。我已经对代码进行了修改。
还是不行。我仍然可以点击输入并做所有事情。
功能有效。它不允许我点击,但我可以点击输入元素。以上是关于如何让所有其他功能停止,直到用户允许或阻止 Jquery 中的 navigator.geolocation?的主要内容,如果未能解决你的问题,请参考以下文章
停止光标,直到在javascript中的textarea中更改文本