周五下午4点禁用链接,周日早上7点启用链接
Disable a link on Friday at 4PM and enable on Sunday 7:00AM
我试图使用一点JavaScript来获取日期和时间,然后使用一些jQuery来启用/禁用链接。
所以我有这样的东西,
<a href="link.html" title="Link">
<img src="link.gif" alt="link" />
</a>
在周五下午4点到周日早上7点之间,我想让它这样说,
<img src="link.gif" alt="link">
我怎么能做到呢?
注:我更喜欢硬编码的链接,而不是有它支撑与JavaScript…
不需要删除锚标记(),只需使用下面的代码禁用它:
function AGoodTime() {
var now = new Date();
var day = now.getDay();
var hour = now.getHours();
var IsBadTimeOnFriday = day == 5 && hour >= 16;
var IsBadTimeOnSaturday = day == 6;
var IsBadTimeOnSunday = day == 7 && hour <= 7;
return !IsBadTimeOnFriday && !IsBadTimeOnSaturday && !IsBadTimeOnSunday;
}
$('.GoodTimes').click(function(event) {
if(!AGoodTime()) {
event.preventDefault();
}
});
:
<a class="GoodTimes" href="http://www.google.com" target="_blank">test link</a>
这是一个工作版本http://jsbin.com/ahitiv/9/edit#source
function ShowHide()
{
var d = new Date();
var dayofweek = d.getDay();
var hourofday = d.getHours();
if ((dayofweek === 0 && hourofday <= 7) || dayofweek === 6 || (dayofweek === 5 && hourofday >= 16))
{
$("#hello a").click(function(e){
e.preventDefault();});
}
}
$(document).ready(function(){
ShowHide();
});
首先,我不得不说,这听起来更像是服务器端的工作。
类似于(伪代码)
if shouldDisplayLink
echo "<a ... <img ... </a> "
else
echo "<img ... />"
,但如果需要JS解决方案,您可以使用jquery执行以下操作。创建2个div。我们称一个为"有链接",另一个为"无链接"。检查时间是在之前还是之后,然后对不想显示的时间调用"hide"。它看起来像
<div id="withlink">
<a href="http://steps.mograbi.info">
<img src="http://steps.mograbi.info/images/steps-logo.png?1321507410" alt="steps"/>
</a>
</div>
<div id="withoutlink">
<img src="http://steps.mograbi.info/images/steps-logo.png?1321507410" alt="steps"/>
</div>
<script type="text/javascript">
$(function(){
var d = new Date();
if (( d.getDay() == 5 && d.getHours() > 16 ) ||
( d.getDay() == 0 && d.getHours() < 7 ))
{
console.log("hiding with link");
$("#withlink").hide(0);
}
console.log("hiding without link");
$("#withoutlink").hide(0);
})
</script>
如果有什么需要我添加/修改的,请告诉我。 类似于
// caching the time variables.
var today = new Date();
var d = today.getDay();
var h = today.getHours();
if (d == 6 || (d ==5 && h>16) || (d == 0 && h < 7)) {
$('a').click(function(e){
e.preventDefault(); #prevent the link from working, without hiding it..
});
}
当日期在指定范围内时,将图像移出链接并删除链接的javascript解决方案:
var d = new Date();
var doDisable = (d.getDay() == 5 && d.getHours() >= 16) || d.getDay() == 6 || (d.getDay() == 0 && d.getHours() < 7);
if (doDisable) {
$('#link img').insertBefore('#link');
$('#link').remove();
}
将其放入jQuery-DOM-Ready-Loader中。
正如@Origin所指出的,这并不会阻止用户访问链接的url,它只会在支持javascript的浏览器中隐藏链接。
JavaScript的问题是,它将在客户端机器上被禁用/删除,而不是在您的机器上。所以说,如果你想在你的时间(比如美国)禁用链接,它将不会同时在欧洲禁用。
所以最好的方法是从服务器端禁用链接。
在JavaScript中,另一种方法是从一些标准位置获取服务器时间或时间,这不会根据用户的位置和启用或禁用链接而改变。我找到了这个代码来获取时间。
$(document).ready(function(){
var timezone = "Europe/Berlin";
$.getJSON("http://json-time.appspot.com/time.json?tz="+timezone+"&callback=?",
function(data){
if (data.hour < 12) {
alert ("Good morning in "+timezone);
} else {
alert ("Good afternoon in "+timezone);
}
})
});
现在你可以使用这段代码来显示/隐藏链接创建2div/span和显示一个基于你的时间。
:
下面是我刚才提到的方法的一个工作示例。http://jsfiddle.net/pkDNX/
您必须调整代码以适应您的时区和if条件。
Update:这是满足您需求的工作示例。http://jsfiddle.net/pkDNX/1/
- JavaScript链接在点击时不起作用;函数在页面加载时工作
- AngularJs正在阻止链接被点击两次
- 有没有一种方法可以让链接不可点击,但仍然可以使用:悬停
- 正则表达式使链接可点击(仅在“href”而不是“img src”中)
- YUI3-具有相同类的链接的点击事件处理
- 使用jquery链接可点击性
- 使用 :not() 忽略对子链接的点击
- 跟踪外部链接的点击
- 如何使用 Python 和 Selenium 获取链接的点击“操作”
- 使用 Yahoo API 拖放带有链接锚点的容器
- Php/HTML/css:链接不可点击
- 行夹紧和松开,链接的点击事件
- 如何触发带有 AUI 的链接的点击 javascript
- 同时使用
链接和<点击>功能 - 包装视频标记的超链接 - 为点击处理程序设置了错误的目标
- 链接与点击
- 香草引导程序导航栏链接不可点击
- ipad safari 8.0.2链接不可点击
- 如何使用AngularJS使图像链接不可点击
- 当链接被点击时,英镑符号会出现在我的URL中