0

そのため、JavaScriptの処理中にボタンを無効にし、JavaScriptの処理が完了したらボタンを再度有効にしようとしています。以下のコードは、IE7を除いて、私が試したすべてのブラウザーで機能します。IE7では、無効化と再有効化を無視しているように見え、ずっと有効になっているように見えます。では、IE7で正しい動作を得るにはどうすればよいですか?

    <script>
      function doSomething()
      {
        document.getElementById("myButton").disabled = true;
        ...
        xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", url, false);
        xmlhttp.send(null);
        response = xmlhttp.responseText();

        if (response != "false")
        {
          document.getElementById("myButton").disabled = false;
        }
        ...
      }
    </script>
    <form onsubmit="doSomething(); return false;">
      <input type="submit" id="myButton" value="Do Stuff"/>
    </form>
    <div id="results"></div>
4

3 に答える 3

1

disabled真/偽の切り替えではありません。無効にした後で何かを有効にしたい場合は、disabled属性を完全に削除できます。

設定するには:document.getElementById("myButton").setAttribute("disabled","disabled");

クリアするには:document.getElementById("myButton").removeAttribute("disabled");

于 2013-03-26T20:07:11.010 に答える
0

disabled = falseパーツをajax応答ハンドラーに配置する必要があります。

function doSomething() {
  var btn = document.getElementById("myButton");
  btn.disabled = true;

  var xhr = new XMLHttpRequest();
  xhr.open("GET", url, false);
  xhr.send(null);
  var response = xhr.responseText;

  // Test this stuff!
  alert(response);

  btn.disabled = false;

  // Test more!
  alert(btn.disabled);
}
于 2013-03-26T22:32:17.053 に答える
0

つまり、IE7での再描画の問題であり、すべてが実行されるまで再描画されませんでした。ですから、さらに調査を重ね、必要なときにIEを再描画するための多くの試みを行った結果、最終的にはうまくいきました。これは本当におかしなことであり、より良い方法を見つけたいと思っていますが、今のところはうまくいきます。

<script>
  function doSomething()
  {
    document.getElementById("myButton").disabled = true;
    setTimeout(doSomething2(), 1);
    return false;
  }

  function doSomething2()
  {
    xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET", url, false);
    xmlhttp.send(null);
    response = xmlhttp.responseText();
    document.getElementById("results).innerHtml = response;
    setTimeout(doSomething3(), 1);
    return false;
  }

  function doSomething3()
    document.getElementById("myButton").disabled = false;
    return false;
  }
</script>
<form onsubmit="doSomething(); return false;">
  <input type="submit" id="myButton" value="Do Stuff"/>
</form>
<div id="results"></div>
于 2013-03-27T20:43:17.217 に答える