2010-03-15 6 views
0

Script: http://keith-wood.name/countdown.htmcompte à rebours jQuery/compter avec des valeurs côté serveur

réponse quotidienne JSON:

items: { fajr: '5:23 am', sharooq: '7:23 am', dhur: '1:34 pm', asr: '4:66 pm': magrib: '6:23 pm', isha: '8:01 pm'} 

Lorsque les charges du site, je fais une requête Ajax et obtenir les temps de réponse ci-dessus. Ce sont des événements qui se produisent tous les jours, avec des horaires différents. Je veux avoir ce temps et mettre un compte à rebours sur combien de minutes il reste ou des heures ou des secondes, et montrer cela et une fois que les secondes sont faites, puis montrer combien de minutes il y a eu cet événement. Après 15 minutes, affichez un nouveau compte à rebours. Voici comment cela se penchera sur l'écran:

dhur 2 hours left 
dhur 2 minutes left (if no longer hours left) 
dhur 55 seconds left (if no longer minutes left) 
dhur 5 seconds ago (if count down finished and then show how many seconds ago) 
dhur 9 minutes ago (if extended more then seconds, then show how many minutes ago) 
asr 1 hour left (after 15 minutes later time changes to new event) 

Si le script que je utilise est pas bon et que vous préférez un autre script pour ce genre de tâche, s'il vous plaît partager avec moi. Il ne doit pas être un script jQuery, mais cela aide si c'est jQuery.

Répondre

2

Je suppose que vous feriez mieux de ne pas réimplémenter cette chose.

Il y a déjà un plugin jQuery vraiment agréable pour cette fonctionnalité (avec support i18n trop)

jQuery timeago

Timeago est un plugin jQuery qui rend facile à soutenir automatiquement mise à jour horodatages floue (par exemple, "il y a 4 minutes" ou "il y a environ 1 jour " ou "2 ans")

P.S .: ne pas oublier de mettre jQuery.timeago.settings.allowFuture = true; pour permettre des dates futures


Si vous avez besoin une sorte de « callback » vous pouvez faire deux choses.

  1. En supposant que vous ne soutenu anglais (pas i18n) il suffit d'utiliser setInterval qui chaque 20-25 secondes vérifie si la chaîne définie par jQuery timeago est « il y a 15 minutes », puis faire tout ce
  2. Hack Adapt la code du plugin et vous brancher dans le $timeago.inWords et faire n'importe quoi si le paramètre distanceMillis est >=900000 (15 * 60 * 1000).
+0

il ne supporte pas le rappel, comment puis-je contourner cela? comme rappel à chaque seconde ou lorsque son changement .. parce que je dois exécuter une action après compte à rebours est fait. – Basit