- PR -

アンカータグにおけるhref属性とonClickイベントの制御

1
投稿者投稿内容
SDM
会議室デビュー日: 2004/06/01
投稿数: 10
投稿日時: 2005-02-10 16:54
ブラウザIE5.0で実行した際、作成した以下のHTML・JSに関して以下のような現象が起こってしまいます。
=========HTMLソース===============
<a href="#.#" onClick="hoge()">hoge</a>
<a href="#" onClick="hoge()">hoge</a>
<a href="javascript:void(0)" onClick="hoge()">hoge</a>
=========JSソース===============
function hoge() {
・・・・・・
form.method="POST"; //GETではなく、POST送信
form.submit();
}
================================
【現象】
サブミット処理が発行されない。
【補足】
IE6であれば、サブミット処理が発行されることが確認できています。

対応方法としては、HTMLを
<a href="javascript:hoge()" >hoge</a>
に変更すれば問題ないことは認識しておりますが、
href属性の設定値をなんとか変更することで、対応可能な方法をご存知でしたら
ぜひご教授の程よろしくお願いいたします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-02-11 08:50
IE5.0 が手元にないのでわかりませんが、
いきなり "form" と参照せずに、documentオブジェクトから辿ってフォームを触ってみたらどうでしょうか。
コード:
document.フォーム名.submit();


みたいな感じで。
taro
ぬし
会議室デビュー日: 2003/10/20
投稿数: 316
投稿日時: 2005-02-11 11:12
onmousedown, onkeydownを入れて処理を奪ってしまうのはいかがでしょうか?

<a href="javascript:alert('href')" onclick="alert('click')" onmousedown="alert('mouse')" onkeydown="alert('key')">てすと</a>
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2005-02-14 09:08
私もIE5が手元にないので未検証の思い付きですが……。
aリンクのリクエスト発行で、直前のsubmitが捨てられているのではないかと思います。

コード:
function hoge() { 
・・・・・・ 
form.method="POST"; //GETではなく、POST送信 
form.submit();
return false; 
}
・・・・・・ 
<a href="#.#" onClick="return hoge()">hoge</a>



みたいな感じでいかがでしょうか?

#aを使うのではなくてspanを使用して、スタイルシートで表面上だけaに似せてやるという方法の方が単純な気もしないでもないですが……
SDM
会議室デビュー日: 2004/06/01
投稿数: 10
投稿日時: 2005-02-22 19:07
結果返答が遅くなりましたが、まず結果として以下に記させていただきます。
1.document.フォーム名.submit();について
A.結果変わりませんでした。補足ですが、<a href="javascript:hoge()" >hoge</a> でサブミット処理は発行できておりますので、submit()処理的には問題ないのかと。

2.<a href="javascript:alert('href')" onclick="alert('click')" onmousedown="alert('mouse')" onkeydown="alert('key')">てすと</a>について
A.KEYプレスとマウスクリックのイベントを消すことは可能でしたが、結果変わりませんでした。

3.return false; の取得について。
A.サブミットの発行が可能でした。お察しのとおり、「aリンクのリクエスト発行で、直前のsubmitが捨てられている」というのがPOINTだったようですね。
以前それをどう回避するかとうことで、
hoge()のなかで、真偽値を返すところまでは試してみたことがあったのですが、
それをhrefにまで返してあげる
onClick="return hoge()">がさらにPOINTだったようです。

ご教授ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)