ASP.NETでChrome対応したらJSでテキストボックスに値が入らなくなったときの対応

IE用に作られたASP.NETのアプリを、Chrome対応(Chromium Edge対応)しているときに、JavaScriptでASP.NETのパーツのテキストボックス(type=text)に値をいれたところ、値が入らないということがおきた。「getElementById(“ID”).value」に、JavaScriptから値をいれたが、IE11では問題ないのに、Chromeだと値が入らなかった。

document.getElementById("ID").value = "値";
// ↑これだと、IE11は値が入るが、Chromeだと入らない。

PostBackは発生させていない処理なのだが。いろいろと調べていき、Chromeの場合は「.defaultValue」を使って初期状態の値を書き換えれば、画面の表示が変わることを確認できた。

document.getElementById("ID").defaultValue = "値";
// ↑Chromeの場合は、defaultValueを書き換える。

IE11も残しておく必要があったので、ブラウザの種類をみて、IF文でIEとそれ以外で分岐させるようにした。

サンプル。

    // ブラウザを取得する
    var userAgent = window.navigator.userAgent.toLowerCase();
    if (userAgent.indexOf('msie') != -1) {
        // IEのときの処理を書く
        document.getElementById("ID").value = "aaaa";
    } else {
        // IE以外の処理。ChromeやChromium Edgeの想定
        // document.getElementById.value だと、画面上の表示が変わらないことがわかった。
        // そのため、document.getElementById.defaultValue に変更したところ、うまくいった。
        document.getElementById("ID").defaultValue = "aaaa";
    }
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする