2011-01-05 4 views
0

ich eine Seite mit AJAX geladen und möchte JQuery verwenden für Telefonnummern (deren Format 555.555.5555) auf der geladenen Seite und wickeln Sie sie mit tel Links zu suchen:Wrap <a> Tag rund um die Telefonnummer mit Jquery

<a href="tel:phone-number-here"> </a> 

Ich kenne die Teile, die ich dazu brauche (denke ich): Regex und. Ich bin mir nicht sicher, wie ich sie mit dem Code, den ich habe, zusammensetzen kann. Ich bin mir auch nicht sicher, wie ich Jquery dazu bringen kann, gefundene Nummern zu behalten und sie in die Tel-Links einzufügen. Würde ich jedes und $ (this) mit Variablen verwenden müssen?

Hier ist der Regex ich für die Identifizierung von 7 - 10 Ziffern gefunden. Ich will es verschiedene Trennzeichen, falls offen lassen unsere Website stoppt Perioden in der Zukunft mit:

^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$ 

Und hier ist der Code, den ich mit jeder Seite laden:

$(".services").click(function(){ 
    var loadUrl = "http://www.example.com";  
    $("#content").html(ajax_load).load(loadUrl + " #content"); 
}); 

Jede mögliche Hilfe geschätzt werden.

+0

Tun nicht die meisten Telefone das alleine? – Chuck

+0

Machst du das? Ich war mir nicht sicher. Wenn das wahr ist, wird es mir Berge von Zeit ersparen, weil ich diesen Code anderthalb Stunden lang gestochert habe, um es zur Arbeit zu bringen. Wenn Telefone es automatisch machen, werde ich nicht einmal stören. – qp2wd

+0

Das ist nicht nötig. Ich würde sagen, dass die meisten Telefone, die in der Lage sind, online gefundene Nummern zu wählen, dazu in der Lage sind, ohne dass Sie diese Anstrengungen unternehmen müssen. – js1568

Antwort

0

This question zeigt Ihnen, wie Sie alle Elemente auf einer Seite mit einer bestimmten Zeichenfolge erhalten. Sie könnten wahrscheinlich auch eine Regex verwenden. Dann könnten Sie String-Ersatz mit Ihrem Regex für alle gefundenen Elemente tun.

+0

Ich habe folgendes versucht: var num = $ ('*: enthält ("^ (?: (?: \ +? 1 \ s * (?: [.-] \ s *)?)? (?: \ (\ s * ([2-9] 1 [02-9] | [2-9] [02-8] 1 | [2-9] [02-8] [02-9]) \ s * \) | ([2-9] 1 [02-9] | [2-9] [02-8] 1 | [2-9] [02-8] [02-9])) \ s * (?: [ .-] \ s *)?)? ([2-9] 1 [02-9] | [2-9] [02-9] 1 | [2-9] [02-9] {2}) \ s * (?: [.-] \ s *)? ([0-9] {4}) (?: \ s * (?: # | x \.? | ext \.? | Erweiterung) \ s * (\ d +))? $ ") '); num.wrap (''); Aber nichts ist passiert. Ich weiß nicht wirklich Javascript, also bin ich mir nicht sicher, wie ich die Regex-Anfrage oder den folgenden Umbruch strukturieren sollte, um es etwas tun zu lassen. – qp2wd

+0

@ qp2wd: Ein Regex wird normalerweise nicht in Anführungszeichen gesetzt. Wenn Sie es in Anführungszeichen setzen, sucht es nach der genauen Zeichenfolge. Im Allgemeinen sieht eine Regex wie 'var myRegex =/foo /' aus. Ordne es einer Variablen wie diesem zu und führe dann '$ (" *: enthält (myRegex) ")'. Ich habe das noch nie probiert, daher weiß ich nicht genau, ob es funktionieren wird, du musst damit rumspielen oder die jQuery-Dokumente nach einer besseren Lösung durchsuchen. – Samo