2016-06-02 13 views
2

So habe ich eine Wordpress-Site, die ich erstelle, die einem Benutzer erlaubt, ein Formular auszufüllen, und wenn es erfolgreich abgeschickt wird, erstellt es einen Beitrag.JS; verhindern, dass die onClick-Funktion abläuft, bis die Seite neu geladen wird

Wenn der Benutzer submit auf dem Formular trifft, habe ich einige js, die sie auffordert, einen Tweet mit dynamisch vorgefüllten Inhalten zu senden. Das Problem ist, dass ich möchte, dass der Tweet mit dem Inhalt eines der Felder gefüllt wird, die sie gerade ausgefüllt und abgeschickt haben. Da dies jedoch sofort geschieht, füllt sich der Tweet mit dem Inhalt des letzten Ausfüllens des Formulars.

Also, ich denke, wenn diese OnClick-Funktion nicht ausgelöst werden kann, bis die Seite neu geladen mit dem neuen Inhalt hinzugefügt und veröffentlicht, sollte das funktionieren, aber ich bin mir nicht sicher, wie das geht.

Hier ist das Markup für das Formulareingabe einreichen:

<input onclick="tweetIt()" class="exclude btn-main stack" name="user-submitted-post" id="user-submitted-post" type="submit" value="<?php _e('Submit', 'usp'); ?>"> 

Hier ist, wie es angezeigt wird, wenn das Formular erfolgreich übermittelt wurde:

<p id="dream"><?php echo substr(the_title('', '', FALSE), 0, 140); ?></p> // the title is populated with one of the fields from the form 

und hier ist die js:

function tweetIt() { 
    var phrase = document.getElementById('dream').innerText; 
    var tweetUrl = 'https://twitter.com/share?text=' + 
    encodeURIComponent(phrase) + 
    '.' + 
    '&url=' + 
    'http://xxx'; 

    window.open(tweetUrl); 
} 

Ich hoffe, ich konnte auf eine Weise artikulieren, die Sinn macht. Jede Hilfe wird, wie immer, sehr geschätzt!

+0

Sendet diese Seite zu sich selbst? –

+1

Setzen Sie in Ihrer tweetIt-Funktion die Phrasenvariable auf den Wert des Formularfelds, das der Benutzer gerade eingegeben hat. – James

+0

ja, Austin, alles geschieht von einer Seite. –

Antwort

0

Sie können check if the current request is a post und dann tweet anrufen.

<?php 
if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
?> 
(function(){ 
    var phrase = "<?php echo substr(the_title('', '', FALSE), 0, 140); ?>"; 
    var tweetUrl = 'https://twitter.com/share?text=' + 
    encodeURIComponent(phrase) + 
    '.' + 
    '&url=' + 
    'http://xxx';  
    window.open(tweetUrl); 
})() 
<?}?> 
+0

Dank Austin, können Sie empfehlen, wo ich diesen Code hinzufügen sollte? –

Verwandte Themen