javascript obtenir toutes les entrées à l'intérieur de la div comme select et textarea
J'ai été à essayer de comprendre comment obtenir tous les éléments à l'intérieur d'un div comme select et textarea et de les transmettre à l'éditeur, jusqu'à présent j'ai compris avec entrée, mais je suis juste coincé avec le reste.
Voici le code jusqu'à présent
function InsertShortcode(elem) {
var shortcodeName = elem.parentElement.id;
var inputs = document.getElementById(shortcodeName).getElementsByTagName('input'), i=0, e;
var inputs_val = '[' + shortcodeName;
while(e=inputs[i++]){
if(e.id){
inputs_val += ' ' + e.id + '="' + e.value + '"';
}
}
inputs_val += ']';
window.send_to_editor(inputs_val);
}
Par ce que je suis en mesure de récupérer toutes les entrées à l'intérieur d'une div lorsque le bouton soumettre est encore, mais je ne suis pas sûr de la façon de saisir textarea ou sélectionner les entrées.
Le problème c'est que je dois le rendre dynamique. Je vais avoir beaucoup de "shortcodes" et chacun sera dans son propre div
où le bouton est. Mais chacun aura ses propres intrants dont je ne contrôle pas, donc j'ai besoin de les attraper tous et envoyer les valeurs de l'éditeur. Voici l'exemple de code.
<div class="output-shortcodes">
<?php foreach( $theme_shortcodes as $key => $name ) { ?>
<div id="<?php echo $key ?>">
<p>
<h2><?php echo $name ?></h2>
</p>
<?php $form = $key . '_form';
if(function_exists($form)) {
$form(); //this is where the input fields are dynamically created on each shortcode.
}
?>
<button class="button-primary" onclick="InsertShortcode(this)">Insert shortcode</button>
</div>
<?php } ?>
</div>
- Espère que cela va vous aide à stackoverflow.com/questions/1829519/...
- Vérifiez également ce un stackoverflow.com/questions/190253/...
- Si vous en bas de vote, veuillez expliquer pourquoi.
- C'est une bonne question - il y a juste certaines personnes sur ALORS, qui semblent downvote quoi que ce soit. J'ai juste voté à vous ainsi que se débarrasser de cela.
Vous devez vous connecter pour publier un commentaire.
Utiliser jQuery et le
:input
pseudo-sélecteur:Simple.
https://api.jquery.com/input-selector/
Ou de l'envelopper dans un
<form>
, alors vous pouvez utiliser:https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/elements
Quelque chose comme cela?
var inputs = $("#" + shortcodeName).find("select, textarea, input");
Si vous pouvez utiliser jQuery ici est un violon: https://jsfiddle.net/q33hg0ar/
Et ici, c'est le w/o jQuery: https://jsfiddle.net/67pp3ggu/
À la fin, je suis passé à jQuery complètement et à l'aide de
:input
m'a aidé à résoudre le problème.Voici le code complet que j'utilise maintenant.
Que fait-il? Alors maintenant, quand je clique sur un bouton shortcode div première utilisation de
preventDefault
pour prévenir la page pour faire défiler vers le haut, ensuite je prends l'id de la div en l'utilisant comme shortcode nom, et enfin je prends toutes les entrées et vérifiez si l'une des entrées idcontent
parce que de décider si un shortcode est joint ou selfclosed et boucle à travers toutes les entrées de la sortie de leur carte d'identité et de valeurs. et à la fin de retour que pour l'éditeur.Certains termes peut-être pas familier mais ceux qui sont familiers de WordPress va reconnaître des termes comme "shortcode"...
À la fin de la sortie finale est:
Si vous downvote à mes questions ou de réponses, veuillez expliquer pourquoi, parce que j'ai toujours tendance à les expliquer ou de les poser de façon aussi détaillée que je peux.