-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を使用しているか、それを使用できると思います。)

アンカーを次から変更することをお勧めします。

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

...次のようなものに:

<a class="selectAddress">

次に、関数の代わりに、next()次のように jQuery ベースのクリック ハンドラーを使用できます。

$(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 に答える