3

があり、内部formにいくつかのタグがあります。フォームの外側<input>にある送信ボタン (実際にはではなく<input>のタイプ) があります。これに似たフォームを設定しました—</p> BUTTON SUBMIT

<form name="testform" id="testform" action="test.jsp" onsubmit="return modify_value();" method="POST">
<input name="test1" id="test1" type="TEXT" value="A"/>
<input name="test2" id="test2" type="TEXT" value="B"/>
<input name="test3" id="test3" type="HIDDEN"/>
</form>

フォームの外側にある送信ボタンは、このように定義されます—</p>

<input type="BUTTON" id="_submit" onclick="document.forms[0].submit();"/>

JavaScript メソッドは次のようになりmodify_value()ます —</p>

function modify_value()
{
    var hidden_field = document.getElementById('test3');
    hidden_field.value = 'new_test_value_set_on_clicking';
    return true;
}

送信ボタンをクリックするとtest3、フォームが送信される前に要素の値を変更しようとしています。何らかの理由で、サーブレットで新しい値を読み取ることができません。

別の方法 - (どちらも機能しません) 動作します!

onclickボタンのイベントをメソッドを指すように設定しmodify_value()、そのメソッドの最後の行でform.submit()、値を返す代わりに呼び出して、少し異なる方法でフォームを送信しようとしました(編集:そしてもちろん、onsubmit属性を削除しますフォーム)。これもうまくいきません。

ここで何が間違っていますか?

4

4 に答える 4

2

.submit()JavaScript で呼び出す場合。フォームのonsubmitイベント ハンドラは呼び出されません。

ボタンをフォーム内に配置し、送信ボタンにします。それ以外の場合は、(意味的にも、JavaScript が使用できない場合にも) 単なるデッド ボタンです。

HTML 検証では、FORM 要素の外側に INPUT 要素を配置することはできません。 奇妙なことに、あなたはそうです!ははは、それは知らなかった…


回答内で指定された制限内で作業する必要がある場合は、onsubmit 属性を削除します。

<form name="testform" id="testform" action="test.jsp" method="POST">
<input name="test1" id="test1" type="TEXT" value="A"/>
<input name="test2" id="test2" type="TEXT" value="B"/>
<input name="test3" id="test3" type="HIDDEN"/>
</form>

...そして onclick 属性を変更して値を変更します...

<input type="BUTTON" id="_submit" onclick="modify_value()"/>

...そしてフォーム送信を関数の最後に追加します。値を返す必要はありません...

function modify_value()
{
    var hidden_field = document.getElementById('test3');
    hidden_field.value = 'new_test_value_set_on_clicking';
    document.forms[0].submit();
}
于 2012-10-17T08:58:42.260 に答える
1

あなたはこれを試すことができます

<input type="BUTTON" id="_submit" onclick="modify_value()"/>
function modify_value()
{
    var hidden_field = document.getElementById('test3');
    hidden_field.value = 'new_test_value_set_on_clicking';
    document.getElementById("testform").Submit();
}
于 2012-10-17T09:03:58.730 に答える
0

これを試して...

HTML

<form name="testform" id="testform" action="test.jsp" onsubmit="return false;" method="POST">  // onsubmit to return false
.....
<input type="submit" id="_submit" onclick="modify_value()"/> //call javascript function
</form>

JAVACRIPT

function modify_value()
{
   var hidden_field = document.getElementById('test3');
   hidden_field.value = 'new_test_value_set_on_clicking'; // do the things here
   document.getElementById('testform').Submit(); // submit the form
}
于 2012-10-17T09:08:32.493 に答える