Pregunta

Quiero añadir H323: enlaces estilo de número a los números de contacto HighRise, por lo que los usuarios pueden hacer clic en un enlace para marcar el teléfono IP ...

El código HTML que estoy viendo es:

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

y, básicamente, quiero sacar el número que está en un td y que comienza con 44, tira a los espacios y se adhieren en un enlace dentro del lapso que tiene un href como

h323:4411231231312  

es decir. se Excluyendo el 0 entre paréntesis.

Cualquier ayuda sería recibida con gratitud a cualquiera de lo siguiente.

(1) ¿Cómo puedo coincidir con el TD que contiene + \ d \ d números? (2) ¿Cómo puedo usar selectores para excluir el lapso cuando llegue el número de la td (3) ¿Qué expresiones regulares debo usar para limpiar el número para el href?

¿Fue útil?

Solución

Esto debería estar cerca de lo que necesita.

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

Una palabra de precaución sin embargo, si el contenido de un span comienza con un dígito que se incluirá en el partido; Es esta una posibilidad que debe tenerse en cuenta?

Otros consejos

Aquí está el script de Greasemonkey final - que podría ser útil para alguien ...

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

}

})();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top