2

最初に無効にされ、javascriptを介して再度有効にされたボタンをクリックしたときに必要なアクションを実行しないIE9で問題が発生しています。

私はいくつかのボタンを持つフォーム(perl CGIで構築された)を持っています。これらはすべて実際のHTMLで無効になっており、フォームが完全に読み込まれると有効になります。これは、ユーザーがページが完全に読み込まれる前にページを保存しないようにするために行われます。

すべてのブラウザで、ボタンは最初は無効になっているように見え、ページが完全に読み込まれると有効になります。IEでも。現在、これらの再度有効にされたボタンは、IE(IE 9でテスト済み)でクリックされたときに機能しませんが、FirefoxとChromeでは期待どおりに機能します。

IE開発者ツールに表示されるこれらのボタンの1つのコード:

<input name="Event_Action" id="syncStream" type="submit" value="Create Sync Stream"/>

最初に無効にされたボタンを作成するコード:

 print $query->submit( -name=>'Event_Action', -value=>$btnCreateSyncStream, -disabled=>'disabled', -id=>'syncStream');

ボタンは、bodyタグのonloadイベントを介して有効になっています。

<body onload="enableButtons()">
<form method="post" action="/cgi-bin/pdf/pdf.pl?&amp;pdf_id=1071&amp;release=at7.1.0&amp;pdf_patch_rel_phase=b" enctype="application/x-www-form-urlencoded" onsubmit="return validatePatchNr()" name="MYFORM">

javascript関数enableButtons:

function enableButtons()
{
  var buttons = document.getElementsByName("Event_Action");
  for (i=0;i<buttons.length;i++)
  {
    buttons[i].disabled=false;
  }  
} 

現在、これらの再度有効にされたボタンの1つが使用されている場合、IEはページをリロードしているように見えますが、ボタンにリンクされている実際のアクションは実行されていません。ChromeとFirefoxの同じページは正しく機能します。これらのブラウザは両方とも正しいアクションを実行します。

フォームのすべてのフィールドが送信されているわけではないため、Perlスクリプトは要求されたアクションを認識しないと思いますが、まだわかりません。

IEの開発ツールを使用して問題をデバッグしようとしましたが、Firebugに慣れている場合、これらのツールを操作するのは簡単ではありません。

誰かがここで何がうまくいかないのか考えていますか?明らかな何かが欠けているかもしれません。

4

1 に答える 1

0

ボタンごとに異なる名前を使用しようとしましたか?通常、一部のブラウザは各ボタンの名前と値のペアを送信しませんが、一部のブラウザは送信します。各ボタンの名前を一意に変更し、隠しフィールドを使用して、ボタンの値ではなく実行するアクションを決定する必要があると思います。

于 2012-12-17T12:38:30.303 に答える