-1

このようなものになるようにいくつかのテキストフィールドに入力しようとしています<a href="check.php?name=john doe&group=metallica">Check</a>

以下は、ここから変更したスクリプトですが、このスクリプトはテキストエリア内にのみ表示され、アンカーリンク内に表示して<a href="check.php?name=john doe&group=metallica">Check</a>.

<div id="textBoxContainer">
    <input type="text" id="name" onkeyup="UpdateTextArea();" name="name" />  
    <input type="text" id="group"  onkeyup="UpdateTextArea();" name="group" />  
</div>  
<textarea id="textAreaResult"></textarea>

<a href="check.php?" id="link_check">Check</a>



<script type="text/javascript">
    function UpdateTextArea() {
        var textBoxContainerDiv = document.getElementById("textBoxContainer");
        var textboxes = textBoxContainerDiv.getElementsByTagName("input");
        var finalResult = "";
        var textAreaFinalResult = document.getElementById("textAreaResult");
    
        for (var i = 0; i < textboxes.length; i++) {
            finalResult = finalResult + textboxes[i].id + "=" + textboxes[i].value + "&";
        }
    
        textAreaFinalResult.value = finalResult;
    }
</script>
4

1 に答える 1

1

テキストエリアの代わりにアンカータグをターゲットにしたい場合は、それに応じて変更する必要があります:

<a id="hrefResult" href="check.php">link</a>

次に、関数で、テキストエリアではなくupdateTextAreaアンカーをターゲットにする必要があります。名前/値のペアの配列を作成し、それらに対して a を実行して、末尾に .hrefvaluejoin&

function UpdateTextArea() {
    var textBoxContainerDiv = document.getElementById("textBoxContainer");
    var textboxes = textBoxContainerDiv.getElementsByTagName("input");
    var length = textboxes.length;
    var target = document.getElementById("hrefResult");
    var params = [];
    var baseref = 'check.php';

    for (var i = 0; i < length; i++) {
        params.push(textboxes[i].id + "=" + textboxes[i].value);
    }
    target.href = baseref + '?' + params.join('&');
}

なんてこった、ここにすべてのフィドルがあります。

関数自体の名前を変更することはおそらく理にかなっていますが、それはテキストエリアが関係していないためです。

于 2012-10-13T04:42:46.550 に答える