2009-10-01 1 views
0

Я хочу добавить h323: ссылки номера стиля для высотных контактных номеров, так что пользователи могут нажать на ссылку, чтобы набрать IP-телефон ...высотного Jquery разбора

HTML, я смотрю на это:

<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> 

и в основном я хочу, чтобы вытащить число, которое в тд и который начинается с +44, вычистить пробелы и вставить в связи внутри диапазона, который имеет HREF как

h323:4411231231312 

т.е. отгоняет 0 в скобках.

Любая помощь может быть получена любым из следующих способов.

(1) Как мне сопоставить номер td, содержащий + \ d \ d? (2) Как использовать селекторы для исключения диапазона, когда я получаю номер из td (3). Какое регулярное выражение следует использовать для очистки номера для href?

+0

, когда за ним следует 1-3 цифр, к сожалению ... – Dycey

ответ

2

Это должно быть близко к тому, что вам нужно.

$('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); 
    } 
}); 

Одно слово предостережения, хотя, если содержание span «s начинается с цифры она будет включена в матче; это возможность, которая должна быть учтена?

+0

Спасибо за это. Я добавил ответ, содержащий окончательный сценарий GreaseMonkey ... – Dycey

1

Вот окончательный GreaseMonkey сценарий - может быть полезным для кого-то ...

// ==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); 
     } 
    }); 

} 

})();