0

複数のフォームをループして、attr vhid 値をバックエンドの cgi に送信しようとしています。問題は、アラートが最初の値を 2 回表示していることです。私はJavaScriptが非常に苦手で、助けていただければ幸いです。

JavaScript

$(document).ready(function () {
    $(".sping").each(function () {
        $('form#spingForm').ready(function () { // Form is submitted
            var data = $('#vhid').attr('value'); // get device name
            alert(data);
        });
    });
});

HTML

<div class="sping">
    <div id="spingResult-1"></div>
    <form id="spingForm-1" name="spingForm-1" method="post" action="">
        <input id="vhid" type="vhid" name="vhid" value="1" />
    </form>
</div>
</div>
<div class="span6"></div>
</div>
<div class="row-fluid">
    <div class="span6"><strong>DATA</strong>
        <br />
        <div class="sping">
            <div id="spingResult-2"></div>
            <form id="spingForm-2" name="spingForm-2" method="post" action="">
                <input id="vhid" type="vhid" name="vhid" value="2" />
            </form>
        </div>
    </div>
    <div class="span6"></div>
</div>
</div>
4

2 に答える 2

0

それを理解できなかったので、jsコードを関数でラップし、すべてのフォームの後に呼び出しました。

于 2013-10-15T11:49:03.567 に答える
0

まず、ドキュメント内の要素には一意の IDが必要です。JavaScript は最初の ID のみを処理し、それ以外の検索を停止します。あなたの例inputでは、同じ ID を持つ 2 つの要素があります。

idclass代わりに変更します。

<input class="vhid" type="vhid" name="vhid" value="2"  />

次に、jQuery のeach()メソッドを使用してすべてのフォームを反復処理し、すべての値を取得します。

var vhidArray = [];
$('input.vhid').each(function() {
    vhidArray.push($(this).val());
});

ここでは、配列 ( ) を作成し、「vhid」( ) のクラスを持つvhidArray各要素をループして、その値を配列にプッシュしています。inputinput.vhid

ページに値が「20」と「hello, world!」の 2 つの「vhid」入力要素がある場合、次の配列になります。

vhidArray = ["20", "hello, world!"]

次に、フォームの送信関数でその配列をサーバーに渡すことができます。

于 2013-10-15T11:55:48.153 に答える