具有相同表单名称的多个表单。但我想发送正在选择的表单值

时间:2013-05-05 06:33:15

标签: javascript jquery jsp

在我的网站上,我正在从数据库中检索多个以前保存的地址,并在我的网站上显示。现在,用户可以选择其中任何一个,所选地址的数据将被发送到下一页以插入数据库。

http://tinypic.com/r/2lj70i9/5

我的jsp代码获取地址:

<a href="javascript:next()">
<div class="address1">
<form name="form2" method="post">
<input name="name" type="text" readonly="readonly" value="<% out.print(x1); %>" style="font-weight: bold;" />
<input name="address" type="text" readonly="readonly" value="<% out.print(x2);%>"/>
<input name="city" type="text" readonly="readonly" value="<% out.print(rs1.getString("city"));%>"/>
<input name="state" type="text" readonly="readonly" value="<% out.print(rs1.getString("state"));%>"/>
<input name="pin" type="text" readonly="readonly" value="<% out.print(rs1.getString("pin"));%>"/>
<input name="phone" type="text" readonly="readonly" value="<% out.print(rs1.getString("mob"));%>"/>
</form>
<div class="selectLine">Click to Select</div>
</div>
</a>

我的Javascript是:

function next()
{
var f=document.forms["form2"];
f.method="post";
f.action='checkout3.jsp';
f.submit();
}

但问题是我选择的只是顶部地址被提取到下一页。

1 个答案:

答案 0 :(得分:0)

目前,您的主要元素都会调用您的next()函数,而不会传递有关所选项目的任何信息。您可以使用onclick='next(this)'来改变它,以便您的函数获得对所单击锚点的引用,但通常最好不要将JS直接包含在您的html中 - 特别是如果您使用的是像jQuery这样的库易于设置事件处理程序。 (我假设您已经使用了jQuery,或者在您为问题添加了jQuery标记时对它开放。)

我建议改变你的锚点:

<a href="javascript:next()">

...类似于:

<a class="selectAddress">

然后您可以使用基于jQuery的点击处理程序代替您的next()函数,如下所示:

$(document).ready(function() {

    $("a.selectAddress").click(function() {
       $(this).find("form")
              .prop("action", "checkout3.jsp")
              .submit();
    });    
});

即,将单击处理程序绑定到该类的所有锚点。在处理程序中,this将是单击的特定锚点,因此您可以使用.find()方法选择作为锚点后代的表单,然后设置其action属性,然后提交它。请注意,您的表单在其html中包含method="post",因此无需像在next()函数中那样再次设置此表单。