0

次の JavaScript 関数を使用して、フォームの各要素に入力された値を取得しました。ユーザーが送信ボタンをクリックすると、ユーザーが各コントロールに入力した値を表示する必要があります。このコードは、ラジオボタンを除くすべてのコントロールでうまく機能します。誰かが私にそれを行う方法を提案できますか?

function DisplayFormValues(){
            var str = '';
            var elem = document.getElementById('form1').elements;
            for(var i = 0; i < elem.length; i++)
            {

                str += "<b>Name:</b>" + elem[i].name + "\n";
                str += "<b>Value:</b><i>" + elem[i].value + "\n";
                str += "<BR>";
            } 
            document.getElementById('lblValues').innerHTML = str;
        }
4

1 に答える 1

1

ラジオ ボタンとチェックボックスの値は、DOM で同じ名前を共有しているため、簡単に取得できません。これらの各要素をループして、その子のどれがチェックされているかを確認する必要があります。

したがって、ループを拡張する必要があります。これを行う 1 つの方法は次のとおりです。

function DisplayFormValues(){
    var theform = document.form1;
    var a = ['input', 'textarea', 'select'];
    var echo = '';
    for (var i = 0; i < a.length; i++) {
        var tag = a[i];
        var els = theform.getElementsByTagName(tag);
        for (var j = 0; j<els.length; j++) {
            el = els[j]; // the element
            if ((tag == 'input' && (el.type == 'text' || el.type == 'password')) || tag == 'select') {
                echo += '<strong>' + el.name + '</strong>: ' + el.value + '<br />';
            } else if ((tag == 'checkbox' || tag == 'radio') && el.checked) { // the element is checked!
                echo += '<strong>' + el.name + '</strong>: ' + el.value + '<br />';
            }
        }
    }
    document.getElementById('lblValues').innerHTML = echo;
}
于 2013-03-11T17:41:53.027 に答える