21

'onClick'メソッドを使用して呼び出すとうまく機能するJavaScript関数があります。基本的には、htmlフォームからデータをプルし、そのデータに基づいて別のページにリダイレクトします。

ただし、「Enter」ボタンを押してフォームを送信するか、JavaScript関数を呼び出すと、onClickボタンを使用してJavaScript関数を呼び出す代わりに、希望どおりに応答しません。

ユーザーがキーボードのEnterボタンを押すと、ページごとに「続行ボタン」をクリックした場合と同じことが起こります(onClickを介して関数を呼び出します)。

これが私のコードです:

JS関数:

function completeAndRedirect(){
    alert('You\'re nearly there! To complete your entry, you simply need to tap \'continue\' on the next page. Good luck!');
    location.href='http://google.com/?SID='+'<? echo $CATEGORY; ?>'+','+'<? echo $PLATFORM; ?>'+','+'<? echo $DEVICE; ?>'+'&email='+document.forms[0].elements[0].value;
}

フォームは次のとおりです。

<form action="" method="post" onsubmit="completeAndRedirect()">
    <input type="text" id="Edit1" style="width:280; height:50; font-family:'Lucida Sans Unicode', 'Lucida Grande', sans-serif; font-size:22px">
</form>

手伝ってくれる人に感謝します!

4

3 に答える 3

61
<form action="javascript:completeAndRedirect();">
    <input type="text" id="Edit1" 
    style="width:280; height:50; font-family:'Lucida Sans Unicode', 'Lucida Grande', sans-serif; font-size:22px">
</form>

関数を指すようにアクションを変更すると、別の方法で問題が解決されます。

于 2012-10-30T17:29:51.077 に答える
10

デフォルトの動作を防ぐ必要があります。e.preventDefault()次のいずれかを使用できますreturn false;。この場合、最良の方法は、次のいずれかを使用できることreturn false;です。

<form onsubmit="completeAndRedirect(); return false;">
于 2012-10-30T17:21:58.430 に答える
1

フォームが送信しているように見えますが、これはデフォルトの動作です。次の方法でフォームを停止できます。

<form action="" method="post" onsubmit="completeAndRedirect();return false;">
于 2012-10-30T17:19:35.060 に答える