2012-09-05 3 views
1

J'ai une entrée de texte créée dynamiquement avec javascript où je mets également du texte avec javascript. Je voudrais faire la variable de taille d'entrée de texte, en fonction de la longueur du texte et avec une largeur maximale de 70%Taille du texte d'entrée HTML

Pour cela, je me sers:

'<input type="text" style="max-width:70%" name="affiliation" 
id="affiliation'+affiliation_id+'" value="'+article_affiliations[i].name+'" 
size='+article_affiliations[i].name.length+'/>' 

Tout fonctionne bien lorsque le texte est plus de 68% mais lorsque ce n'est pas le cas, la zone de saisie de texte est plus petite que la taille du texte. Par exemple, lorsque la taille du texte est de 118, la zone de texte ne comportera que 106 caractères et je ne sais pas pourquoi. Toute aide et suggestion sera très appréciable.

Merci.

+0

Qu'est-ce que "? Taille" Longueur en caractères? Hauteur en pixels? Largeur en pixels? Et pourquoi y a-t-il autant de '; 'entre les attributs de l'élément' input'? –

+0

@AaronDigulla L'attribut de taille en html est la longueur en caractères. –

+0

@Milos: Voir ma réponse ci-dessous. –

Répondre

2

Javascript:

function incSize(event) { 
    var size = event.value.length; 
    event.setAttribute("size", size); 
    event.setAttribute("style", "width:auto")  
} 

HTML:

<input type="text" name="affiliation" onkeyup="incSize(this)" size="1" />​ 

DEMO

+0

Merci A.K. En fait, je n'ai pas besoin de mettre en cache le fichier, car je remplis la saisie de texte avec javascript. –

+0

Lorsque vous tapez de très longs chiffres, le premier chiffre commence à disparaître vers la gauche, ce qui n'est pas une solution idéale. – Abadaba

0

Supprimez l'attribut de style puis essayez ceci:

$('input[type="text"]').keyup(function(){ 
    $(this).attr({width: 'auto', size: $(this).val().length}); 
}); 

Assurez-vous qu'aucun des styles CSS sont Redéfinition de la largeur. obtenu la réponse d'ici: Dynamically resize input

+0

Merci pour la réponse mais je voudrais utiliser seulement javascript et HTML, pas de JQuerry. –

+0

@Milos: Voir ma réponse avec une solution javascript. –