0

我正在尝试遍历多个表单并将 attr vhid 值发送到后端的 cgi。问题是警报显示第一个值两次。我非常不擅长 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

首先,文档中的元素必须具有唯一的 ID。JavaScript 只会处理第一个 ID 并停止寻找其他任何东西。在您的示例中,您有两个input具有相同 ID 的元素。

改为:id_class

<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

如果您的页面上有两个“vhid”输入元素,其值为“20”和“hello, world!”,您将得到以下数组:

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

然后,您可以在表单的提交函数中将该数组传递给您的服务器。

于 2013-10-15T11:55:48.153 回答
0

想不通,然后只是将js代码包装在一个函数中,并在每个表单之后调用它。

于 2013-10-15T11:49:03.567 回答