2009-10-01 11 views
0

Je veux ajouter H323: liens de style nombre de numéros de téléphone Highrise, afin que les utilisateurs peuvent cliquer sur un lien pour composer le téléphone IP ...HighRise jQuery analyse syntaxique

Le html je regarde est:

<table> 
    <tbody> 
    <tr> 
     <th>Phone</th> 
     <td>+44 (0)1123 1231312<span>Work</span></td> 
    </tr> 
    <tr> 
     <th></th> 
    <td>+44 (0)777 2342342<span>Other</span></td> 
    </tr> 
    </tbody> 
</table> 

et, fondamentalement, je veux tirer le numéro qui est dans un td et qui commence par +44, dépouiller les espaces et coller dans un lien dans la durée qui a un href comme

h323:4411231231312 

c'est à dire se déshabiller le 0 entre parenthèses.

Toute aide serait grandement appréciée pour l'une des raisons suivantes.

(1) Comment faire correspondre le td contenant + \ d \ d numéros? (2) Comment utiliser les sélecteurs pour exclure le span quand j'obtiens le numéro du td (3) Quelle regex dois-je utiliser pour nettoyer le numéro pour le href?

+0

quand il est suivi de 1-3 chiffres, malheureusement ... – Dycey

Répondre

2

Cela devrait être proche de ce dont vous avez besoin.

$('tbody td').each(function() { 
    // match a sequence of digits, parentheses and spaces 
    var matches = $(this).text().match(/[ \d()]+/); 

    if (matches) { 
     // remove the spaces and stuff between parentheses 
     var href = 'h323:' + matches[0].replace(/\s|\(.*?\)/g, ''); 
     var link = $('<a/>').attr('href', href); 

     $('span', this).append(link); 
    } 
}); 

Un mot d'avertissement cependant, si le contenu de span commence par un chiffre, il sera inclus dans le match; Est-ce une possibilité qui doit être prise en compte?

+0

Merci pour cela. J'ai ajouté une réponse contenant le dernier script GreaseMonkey ... – Dycey

1

est ici le script Greasemonkey final - pourrait être utile pour quelqu'un ...

// ==UserScript== 
// @name   HighRise Dialler 
// @namespace  
// @description Adds a CALL link to HighRise Contacts. 
// @include  https://*.highrisehq.com/* 
// @require  http://code.jquery.com/jquery-latest.min.js 
// ==/UserScript== 

(function(){ 

GM_xmlhttpRequest({ 
    method: "GET", 
    url: "http://jqueryjs.googlecode.com/files/jquery-1.2.6.pack.js", 
    onload: run 
}); 

function run(details) { 

    if (details.status != 200) { 
     GM_log("no jQuery found!"); 
     return; 
    } 

    eval(details.responseText); 
    var $ = jQuery; 

    //do something useful here.... 

    $('table td').each(function() { 
     var matches = $(this).text().match(/^\+*?[\d\(\) ]+/); 

     if (matches) { 
     var href = 'h323:' + matches[0].replace(/\+44|\+|\s|\(|\)/g, ''); 
     var link = $(' <a>CALL<a/>').attr('href', href); 
     $(this).find('span').append(link); 
     } 
    }); 

} 

})(); 
Questions connexes