javascript获取div内的所有输入,包括select和textarea

Ale*_*vić 2 html javascript css jquery

我一直在试图弄清楚如何获取div中的所有输入元素,包括select和textarea并将它们传递给编辑器,到目前为止,我已经考虑了输入,但我只是坚持其余的.

这是迄今为止的代码

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);
    }
Run Code Online (Sandbox Code Playgroud)

通过这个我能够获取提交按钮所在的div内的所有输入,但我仍然不知道如何抓住textarea或选择输入.

问题是我必须让它变得动态.我将有许多"短代码",每个都将在div按钮所在的位置.但每个都有自己的输入,我无法控制,所以我需要抓住它们并将值发送给编辑器.这是代码的示例.

    <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>
Run Code Online (Sandbox Code Playgroud)

Whi*_*Hat 5

像这样的东西?

var inputs = $("#" + shortcodeName).find("select, textarea, input");


Kon*_*ong 5

使用jQuery和:input伪选择器:

$('.output-shortcodes').find(':input');
Run Code Online (Sandbox Code Playgroud)

那么简单.

https://api.jquery.com/input-selector/

或者将其包装成一个<form>,然后你可以使用:

document.getElementById("outputForm").elements...
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/elements