Javascript/Php. Stringa di testo a capo con alert

Monte95

Nuovo Utente
27 Mar 2017
12
0
1
25
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.
 

lperino096

Nuovo Utente
17 Apr 2017
6
1
3
Al posto di:"return $stringa_tagliata.$cont;" io metterei semplicemente:"return $cont;"
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
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>";
?>
 

Monte95

Nuovo Utente
27 Mar 2017
12
0
1
25
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...
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
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>";
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.039
146
63
PR
www.borgo-italia.it
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

Monte95

Nuovo Utente
27 Mar 2017
12
0
1
25
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!! :)