2010-06-13 6 views
1
<textarea onfocus=" javascript:clearContents(this); this.cleared=true;" rows="5" cols="40" id="comment" name="comment" <?php if($vis["username"] == $pusername) { echo "DISABLED"; } ?>>...</textarea> 
<input onsubmit="if (!this.comment.cleared) clearContents(this.comment); return true;" type="submit" name="Submit" value="Stem!"/> 

function clearContents(element) { 
    element.innerHTML = ''; 
} 

Ceci ne fonctionnera pas, et je ne peux pas comprendre pourquoi. Ce qu'il fait: efface le contenu si elle hasnt été onfocus/cliqué par la personneJavascript onsubmit clearcontent ne fonctionne pas

Répondre

1
clearContents(document.getElementById('comment')) 

Vous devez lier onsubmit à la <form> et faire discrètement, idéalement ...

1
<input onsubmit="if (!this.comment.cleared) 

this est le <input>. Les éléments d'entrée n'ont pas d'événement submit ou de propriété comment. Probablement que vous voulez mettre cela sur l'élément <form> entourant:

<form onsubmit="if (!this.comment.cleared) ... 

Bien qu'il soit possible de le mettre sur le bouton soumettre, vous auriez à utiliser onclick="if (!this.form.comment.cleared) ..., pour naviguer jusqu'à la forme et vers le bas à l'autre contribution. Ce n'est généralement pas une bonne idée de lier le code de soumission de formulaire à un bouton particulier. Comme l'a dit meder, faire tout cela dans les gestionnaires d'événements en ligne est un peu moche. (En particulier le préfixe javascript: inutile.) Préférez assigner de JS à la place:

<form id="someform" method="post" action="somewhere"><div> 
    <textarea 
     rows="5" cols="40" name="comment" 
     <?php if($vis['username']==$pusername) { ?>disabled="disabled"<?php } ?> 
    > 
     ... 
    </textarea> 
    <input type="submit" name="Submit" value="Stem!" /> 
</div></form> 

<script type="text/javascript"> 
    var f= document.getElementById('someform'); 
    var cleared= false; 
    f.elements.comment.onfocus= function() { 
     f.comment.value= ''; 
     cleared= true; 
    }; 
    f.onsubmit= function() { 
     if (!cleared) 
      f.comment.value= ''; 
    }; 
</script> 

J'ai utilisé la syntaxe XHTML pour l'attribut désactivé (puisque vous semblez être en utilisant la syntaxe XHTML ailleurs), et utilisé value pour effacer la contenu. N'utilisez pas innerHTML -il ne fait pas ce que vous pensez, sauf lorsque cela est dû à des bogues du navigateur. Les champs de formulaire doivent toujours être accessibles en utilisant value.