2016-12-09 2 views
0

Ich versuche, eine Art von Posting-System zu erstellen und es funktioniert zum größten Teil, aber wenn die Post-Taste geklickt wird, das Eingabefeld nicht wird zurückgesetzt. Ich habe versucht, eine Reihe von verschiedenen Möglichkeiten, und keiner von ihnen gearbeitet haben, hier so ist der letzte, den ich versucht (CodePen setzt den Skeleton-Code, so wäre es nicht das Problem sein):Der Versuch, Eingabefeld mit Formular Reset() -Funktion, aber nicht funktioniert

HTML:

<form id="post" name="write"> 
    <div class="textbox"> 
     <input class="postwriter" name="post" type="text" placeholder="What's on your mind?" id="myPost"> 
     <button id="Post" onclick= "return write_below(this); return formReset();" value="submit" >Post</button> 
    </div> 
</form> 
<div class="posts" id="postDisplay"> 
    <p class="para"><span id='display'></span></p> 
</div> 

JavaScript:

function write_below(form) { 
    var input = document.forms.write.post.value; 
    document.getElementById('display').innerHTML += "<p>" + Math.floor(Math.random()*20) + ": " + input + "</p>" + "<br/>"; 
    return false; 
} 
function formReset(){ 
    document.getElementById("post").reset(); 
} 
+1

Sie haben zwei Elemente mit der 'id' von' post' (das Formular und die Schaltfläche). Im HTML-Fall ist das egal. Alle IDs sollten eindeutig sein. –

+0

@ScottMarcus Es gibt dort keine identische ID. JavaScript ist CaSe SeNsItIvE. –

+0

@PraveenKumar Aber, HTML ist nicht und hat ids, die nur für den Fall unterscheiden Wird ein Problem mit '' Links, in CSS und einfach nur verwirrend in JS auch. –

Antwort

3

Ihre onclick wie folgt aussieht:

onclick="return write_below(this); return formReset();" 

Welche trans lates to:

return write_below(this); 
return formReset(); 

Nach der ersten Rückkehr endet das Skript. Also entferne die erste Rückkehr. Der Code sollte wie folgt aussehen:

onclick="write_below(this); formReset(); return false;" 

gesagt haben, dass die return false hier keinen Sinn macht, so es loszuwerden.

function write_below(form) { 
    var input = document.forms.write.post.value; 
    document.getElementById('display').innerHTML += "<p>" + Math.floor(Math.random()*20) + ": " + input + "</p>" + "<br/>"; 
} 

Hinweis: Alle Ihre IDs sehen ähnlich aus, die die Entwickler oder jemand machen könnte, die Ihren Code verrückt sieht. Ist das deine Absicht?

+0

Die Rückgabe false war so, dass es nicht versucht, eine neue Seite zu laden, wenn ich klicke. Und die ähnlichen IDs sind bc. Ich wusste nicht wirklich, was sonst noch zu ID mit lol – user147219

+0

@ user147219 Man, das ist die grundlegende Sache. Okay, falls 'return false' nicht für Sie funktioniert, entfernen Sie sie bitte vollständig. –

+1

@ user147219 Wenn Sie HTML-Element-IDs angeben, ist es am besten, der ID ein Element voran zu geben, das angibt, um welche Art von Element es sich handelt. Zum Beispiel wäre die ID Ihres Formulars 'frmPost' und Ihre Schaltfläche wäre:' btnPost'. Diese sind vollkommen legitim, weil das Präfix sie davon abhält, sich gegenseitig auf die Füße zu treten. Es ist auch toll, weil Sie in Ihrem JavaScript wissen, wenn Sie rennen, sagen 'txtPost', dass das Element ein Textfeld ist und dann wissen Sie, welche Art von Eigenschaften und Methoden es hat, ohne es in der HTML. –

Verwandte Themen