-1

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

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();
}

但问题是无论我选择什么,只有顶部地址被提取到下一页。

4

1 回答 1

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属性,然后提交它。请注意,您的表单method="post"在其 html 中,因此无需像在next()函数中那样再次设置它。

于 2013-05-05T07:34:45.083 回答