web-dev-qa-db-ja.com

IEでテキストボックスのクリアイベントを検出します。 IE固有のクリアボックスがクリックされたときにIE(Internet Explorer)の入力type = "text"(テキストボックス)をクリアするにはどうすればよいですか?

Internet Explorerでは、テキストボックスに入力を開始すると、小さなxのようなボタンが表示されます。このアイコンがクリックされたときにイベントを検出するにはどうすればよいですか?イベントタイプはありますか?

<input type="text" value ="" id ="qsearch" name="qsearch"
    onBlur="qsearchLookup(this.value);" OnClick="qsearchLookup(this.value);"
    onkeyup="qsearchLookup(this.value)"  size="26">

function qsearchLookup(searchVal){
    document.getElementById("qsearch").value="";
}

enter image description here

15
Andrew

この小さなxのようなボタンの特別なイベントについてはわかりません。存在するとは思いませんが、 input event(oninput="qsearchLookup(this.value)"の場合)を使用できます。この変化を捉えるために。

10
outcoldman

それでも誰かが解決策を探しているかどうかはわかりません。残念ながら、clear(X)iconで使用できるイベントハンドラーはありませんが、以下のコードスニペット/トリックは私のために機能しました。完全に非表示にするCSS clear(X)アイコンそして非表示にしたくない場合はclear(X)iconただし、処理する必要がある場合は、JSコードスニペットが役立ちます。IE 8、 9,10,11そしてそれはうまくいく

CSSトリック:

#textFieldId::-ms-clear {display: none;}-特定のテキストフィールド用

または

input[type=text]::-ms-clear { display: none; }-スコープ内のすべてのテキストフィールド

[〜#〜]または[〜#〜]

JavaScriptのトリック(テキストフィールドの値を空/空白にリセットし、htmlイベントKeyUpを起動します。したがって、必要に応じて変更できます)

$('#textFieldId').bind("mouseup", function() {
        var $input = $(this);
        var oldValue = $input.val();
        if (oldValue == "") {
            return;
        }
        setTimeout(function() {
            var newValue = $input.val();
            if (newValue == "") {
                $input.trigger("keyup");
            }
        }, 1);
    });
5
Sunil Kumar Das

これは私にとってはかなりうまくいきました:)

$input.addEventListener('mouseup', function(){
    setTimeout(function(){
        if ($input.value === '') do_stuff();
    }, 1)
});

$input入力要素への参照です。

0
Daniel Tonon