Javascript/Php. Stringa di testo a capo con alert

Monte95

Nuovo Utente
27 Mar 2017
12
0
1
30
Ciao a tutti, sapete dirmi come posso risolvere questo piccolo problema:

ho creato una funzione php che permette di troncare a tot. caratteri una stringa inserita all'interno di una casella di testo, e vengono generati dei puntini di sospensione:
ad esempio la stringa:
"blablablabla"
viene troncata in:
"bla..."
Al click dei puntini di sospensione, tale funzione richiama un' altra funzione javascript che mostra a video un alert contente la stringa originale.
Il problema è che quando inserisco nella casella di testo una stringa che mando a capo, i puntini di sospensione non sono più cliccabili e l'alert di conseguenza non funziona (ad esempio la stringa:
"blabla
blabla"
viene troncata in:
"bla..."
ma al click dei puntini di sospensione non parte la funzione javascript con l'alert.

Sapete dirmi come posso risolvere? Vi lascio quì di seguito la parte di codice interessata:

Codice:
<?php
function TagliaStringa($stringa, $max_char) {
    if(strlen($stringa)>$max_char) {
        $stringa_tagliata=substr($stringa, 0,$max_char);
        $cont = "<a onClick=\"link('$stringa')\" style=\"color:blue; text-decoration:blink; \">...</a>";
        return $stringa_tagliata.$cont;
    } else {
                   return $stringa;
                }
}
?>

Codice:
<script>
function link(a) {
    alert (a);                       
}
</script>

Codice:
<?php
$not      = TagliaStringa($note,45);
echo "<tr> <td> <label> Note: </label> <td> <label> $not </label>";
?>

Grazie mille.
 
aggiungi l'attributo href al tag a mi sembra che sia obbligatorio.
A me funziona
PHP:
<?php

function TagliaStringa($stringa, $max_char) {
    if (strlen($stringa) > $max_char) {
        $stringa_tagliata = substr($stringa, 0, $max_char);
        $cont = "<a href='#' onclick=\"link('$stringa');return false\" style=\"color:blue; text-decoration:blink; \">...</a>";
        return $stringa_tagliata . " " . $cont;
    } else {
        return $stringa;
    }
}
?>
<script>
    function link(a) {
        alert(a);
    }
</script>
<?php

$note = "blabla<br/>\\nblablablablablablablablablablablablablablablabl"
        . "<br/>\\nablablablablablablablablablabla";
$not = TagliaStringa($note, 45);
echo "<tr> <td> <label> Note: </label> <td> <label> $not </label>";
?>
 
aggiungi l'attributo href al tag a mi sembra che sia obbligatorio.
A me funziona
PHP:
<?php

function TagliaStringa($stringa, $max_char) {
    if (strlen($stringa) > $max_char) {
        $stringa_tagliata = substr($stringa, 0, $max_char);
        $cont = "<a href='#' onclick=\"link('$stringa');return false\" style=\"color:blue; text-decoration:blink; \">...</a>";
        return $stringa_tagliata . " " . $cont;
    } else {
        return $stringa;
    }
}
?>
<script>
    function link(a) {
        alert(a);
    }
</script>
<?php

$note = "blabla<br/>\\nblablablablablablablablablablablablablablablabl"
        . "<br/>\\nablablablablablablablablablabla";
$not = TagliaStringa($note, 45);
echo "<tr> <td> <label> Note: </label> <td> <label> $not </label>";
?>


Adesso provo a fare le modifiche che mi hai detto, però probabilmente mi sono spiegato male, perchè la stringa viene inserita dall'utente finale tramite casella di testo (input type="text") e non da variabile, quindi l' a capo, verrà digitato premendo il classico tasto invio...
 
se noti nella mia stringa avevo messo il doppio backslah ( \\n)
prova cosi
PHP:
$cont = "<a href='#' onclick=\"link('" . str_replace(array("\n","\r"), array("\\n","\\r"), addslashes($stringa)) . "');return false;\" style=\"color:blue; text-decoration:blink; \">...</a>";
 
ciao
potresti provare così
PHP:
function TagliaStringa($stringa, $max_char) {
    if (strlen($stringa) > $max_char) {
        $stringa=nl2br($stringa, false);// trasformo \r in <br>
        $stringa=strtr($stringa , "<br>", " ");// cambio il <br> con spazio, o si può eliminare completamente
        $stringa_tagliata = substr($stringa, 0, $max_char);
        $cont = "<a href='#' onclick=\"link('$stringa');return false\" style=\"color:blue; text-decoration:blink; \">...</a>";
        return $stringa_tagliata . " " . $cont;
    } else {
        return $stringa;
    }
}
//......
 
  • Like
Reactions: Monte95
ciao
potresti provare così
PHP:
function TagliaStringa($stringa, $max_char) {
    if (strlen($stringa) > $max_char) {
        $stringa=nl2br($stringa, false);// trasformo \r in <br>
        $stringa=strtr($stringa , "<br>", " ");// cambio il <br> con spazio, o si può eliminare completamente
        $stringa_tagliata = substr($stringa, 0, $max_char);
        $cont = "<a href='#' onclick=\"link('$stringa');return false\" style=\"color:blue; text-decoration:blink; \">...</a>";
        return $stringa_tagliata . " " . $cont;
    } else {
        return $stringa;
    }
}
//......

Ottimo, grazie mille funziona!! :)
 

Discussioni simili