2010-09-26 2 views
0

J'ai un paragraphe, que je voudrais modifier en utilisant la fonction javascript prompt. Tout fonctionne bien alors que je n'ai pas entré < ou >. Ils semble bon en html, mais quand je voudrais les modifier à nouveau, je vois laid &gt; et &lt;Comment obtenir une chaîne d'invite javascript cohérente et innerHTML

Les problèmes peuvent être reproduites facilement par scénario suivant:

  1. appuyez sur Modifier bouton,
  2. Entrez la chaîne <<<>>>.
  3. appuyez à nouveau sur le bouton Modifier.

Vous verrez des symboles d'invite laids dans la boîte de dialogue.

Dans l'invite de dialogue, des symboles non échappés apparaissent.

En fait, avant de passer innerHTML à la fonction d'invite, je devrais désactiver les caractères, comment cela pourrait-il être fait?

Une partie de mon code suivant:

<script type="text/javascript"> 
    function edit() 
    { 
    str = document.getElementById('par').innerHTML; 
    str = prompt(str, str); 
    document.getElementById('par').innerHTML = str; 
    } 
</script> 


<p id="par">aaa</p> 

<input type="button" onclick="edit()" value="Edit" /> 

Je préfère API fonction au lieu de remplacement manuel gt; un &lt;.
solution jquery est également interseting pour moi.

Merci!

+2

+1 réponse de Geoff. Notez également que l'utilisation de prompt est désapprouvée ces jours-ci. IE7 et plus tard, rejettent complètement 'prompt' par défaut, ce qui le rend inutilisable pour la plupart des sites. C'est aussi une fenêtre contextuelle modale, que personne n'aime vraiment de toute façon. Envisagez d'utiliser un formulaire pop-on-top sur la page à la place. – bobince

+0

@bobince Merci beaucoup pour des informations supplémentaires. Pourriez-vous suggérer un bon article ou un site où je peux lire à ce sujet? – sergtk

+1

voir par exemple. http://www.anyexample.com/webdev/javascript/ie7_javascript_prompt%28%29_alternative.xml – bobince

Répondre

4

Si vous voulez vraiment juste le contenu textuel, alors vous devriez utiliser la valeur textuelle plutôt que la propriété innerHTML.

En jQuery, vous pouvez le faire comme ceci:

var paragraph = $("#par"); 
var stringValue = paragraph.text(); 
stringValue = prompt("Please ammend your text", stringValue); 
paragraph.text(stringValue); 
Questions connexes