2012-05-22 14 views
5

Sto caricando il testo in una casella di input tramite lo $("textarea").val(ajaxData); tuttavia non si accenderà automaticamente e i miei dati non verranno visualizzati completamente. C'è qualche metodo o qualcosa che posso chiamare per forzare un aggiornamento?jQuery Area di testo in crescita mobile con dati AJAX

+2

Inserisci il tuo CSS, javascript e HTML - molto probabilmente il tuo problema è dovuto al tuo CSS. –

+0

Non ho css personalizzato, questo è per una normale casella di testo. l'unica differenza è che l'input non proviene dalla tastiera ma dall'origine dati Ajax. Quindi deve esserci una funzione per fare ciò su jQM, semplicemente non so quale sia. – Astronaut

risposta

11

Esiste effettivamente una funzione interna responsabile del ridimensionamento, denominata resizeCheck(). Tuttavia, quella funzione è un dettaglio di implementazione privato e non è esposta dal widget come metodo pubblico.

È possibile aggirare questo, però: dal momento che resizeCheck() è chiamato da gestore di eventi keyup del widget, è possibile attivare l'evento da soli dopo aver impostato il nuovo valore:

$("textarea").val(ajaxData).keyup(); 

Questo sarà ridimensionare il widget nella esatta come se avessi digitato il nuovo testo "a mano".

+0

Grazie ancora a Frédéric, mi hai risparmiato ore di ricerca. Funziona perfettamente! :) Tuttavia, una volta che il campo è cresciuto, non tornerà ... ho trovato questo comportamento facendo anche delle modifiche manuali. c'è un modo per resettare questo campo alla normalità? Potrebbe essere un bug? – Astronaut

+0

@Adam, questo è davvero un bug. [Bug # 2719] (https://github.com/jquery/jquery-mobile/issues/2719), per essere precisi. –

+0

Grazie ancora per il tuo feedback. Penso che fonderò il plugin elastico, è un peccato perché volevo usare il CDN invece di un jQuery locale. – Astronaut

0

Devi specificare un'altezza: 'auto' nel tuo elemento contenitore usando CSS.

Se si è scritta un'altezza statica, non si accenderà automaticamente.

1
var offset=15; 
$("textarea").val(ajaxData); 
$("textarea").height($("textarea").innerHeight() + offset) 

Si può provare senza alcun offset se funziona nel tuo caso. È inoltre possibile modificare il valore di offset se necessario

+0

Ciao grazie per questa soluzione. Comunque mi stavo chiedendo se qualcuno sa quale funzione è chiamata internamente da jQM per farlo con un testo di input regolare. se lo digiti autogrow, ma non con i dati ajax. – Astronaut

+0

Ciao Imdad interiorHeight mi darà il valore del testo? Posso usare questo per renderlo elastico? Crescere e restringere? – Astronaut

+0

innerHeight ti darà l'altezza del contenuto interno. Quindi, puoi crescere/rimpicciolire di conseguenza. Per ottenere il valore o il testo effettivo usa '$ (" textarea "). Val()' – Imdad

Problemi correlati