Comment traiter un <div> comme une forme <input>
Ce que j'ai fait est la suivante:
HTML
<form>
<div id="textBox" contenteditable="true" name="textBox"><?php echo $storyText; ?>
</div>
<textarea id="hiddeninput" name="hiddeninput"></textarea>
<input type="submit" id="save" name="save" value="Submit"/>
</form>
Javascript
$('#save').click(function () {
var mysave = $('#textBox').html();
$('#hiddeninput').val(mysave);
$("form:first").submit();
$('#hiddeninput').append(mysave);
alert($('#hiddeninput').val());
});
Donc à la fois l'alerte et l'ajout afficher les informations correctes, mais il ne sera pas économiser #hiddeninput comme une variable php quand je soumettre. À l'origine, j'ai eu cela comme un caché méthode de saisie, mais j'essaie de montrer qu'il ne poste pas n'importe ce que je fais,
- Quelle est votre question? Et ce qui est
submit()
? - Cela ressemble vraiment laid que je me suis amusé avec elle beaucoup. Je ne peux pas comprendre comment le présenter DIV html comme une forme de la valeur. C'est tout ce que je veux.
- Ce qui est arrivé à la
form
tags? - Vous ne pouvez pas. Un
div
ne fait pas partie d'un formulaire dans ce sens. Utiliser untextarea
. - C'est ce que le code jQuery est en train de faire: déplacer le div contenu dans un textarea.
- Je ne peux pas utiliser textarea. Je suis l'aide de l'édition de texte riche.
- Je vais les montrer textarea au lieu d'une balise input de montrer qu'il ajoute les informations correctes. Je suis en train de déplacer le div contenu d'un champ caché et de le soumettre.
Vous devez vous connecter pour publier un commentaire.
Votre code fonctionne presque comme il est.
Mais je préfère l'utilisation normale
<input type="hidden">
et vous n'avez pas besoin de déclenchersubmit
pour votre formulaire dans votre cas il suffit de mettre la valeur dans un champ caché.Donné votre balisage, avec de légères modifications
js
var_dump($_REQUEST)
sur php côté donnetype="submit"
àtype="button"
, 3) dans le.click()
après le réglage de la hiddeninput valeur, ajouter$("#myForm").submit();
(à noter également: votre cachés textarea bande de toute mise en forme, tout en utilisant caché entrée conservera - selon ce que vous avez besoin)Essayer de liaison de l'événement submit au lieu de l'événement click. Ce qui pourrait être happending est le formulaire de soumission avant la valeur de votre textarea est réglé.
J'ai testé cet exemple avec method="get" et a obtenu le code html de la div à afficher dans l'URL.
Je crois que votre formulaire est soumis, avant votre code js a une chance de s'exécuter. Puisque vous êtes soumettre manuellement à partir de jQuery, essayez de prévenir l'événement par défaut du bouton (qui a également soumet le formulaire):
Parlant seulement de l'expérience, vous ne pouvez pas soumettre une
div
valeur dans un formulairePOST
.Vous pouvez le changer pour un textarea, et si vous souhaitez empêcher les utilisateurs de modifier, la mettre à
disabled
.Alternativement, vous pouvez utiliser javascript pour envoyer le formulaire, et de tirer la valeur de
#hiddeninput
de cette façon.Voici un moyen générique de soumettre toute div éléments de contenu que vous souhaitez (voir les notes ci-dessous):
Note 1) à l'aide de
<input type="hidden">
préserve la mise en forme (IE11 permet plus de FF). Si vous préférez la bande de toute la mise en forme, y compris CFLFs (c'est à dire,<br>
's) d'utilisateurs en appuyant sur Entrée/Retour, l'utilisation<textarea style="display:none;"></textarea>
à la place.Note 2) assurez-vous que la validation est terminée avec succès la première ou vous allez vous retrouver avec plusieurs entrées avec le même nom.