1

HTML

<input type="text" id="match1">
<div id="divf">It is a div which has a dark future</div>
<button>Not Remove</button>

とスクリプト

$(function(){
    $("input").blur(function()
    {
       $("#divf").remove(); 
    });
});

コードから明らかなように、入力のぼかしでdivを削除したいのですが、誰かがボタンをクリックしている場合にdivを削除したくないのです。方法がわかりません。誰かがこの問題を解決できますか?

4

4 に答える 4

5

でタイムアウトを設定し.blur()、ボタンがクリックされたときにタイムアウトをクリアすることができます。

var to = false;

$('input').blur(function() {
    // start the timer
    to = setTimeout('removeDiv', 200);
});

$('button').click(function() {
    // if the timer is still running, clear it
    to && clearTimeout(to);
});

function removeDiv()
{
    $("#divf").remove();
    // reset timer
    to = false;
}

フォーカスが入力からボタンに直接移動すると(クリックされた場合)、タイマーはクリアされ、divは削除されません。

于 2012-05-18T09:57:32.013 に答える
0

@Adilの回答を編集して、欲しいものを手に入れました

$(function(){
       var isButtonClicked = false;
       $('button').one('mousedown', function(){
      isButtonClicked = true;
    });

    $("input[type=text]").blur(function()
        {
           if(!isButtonClicked) 
               $("#divf").remove();
               else isButtonClicked = false;
        });
    });
于 2012-05-18T10:11:07.573 に答える
0

コードの代わりにこのコードを使用してください

$(function(){
    $("#match1").blur(function()
    {
       $("#divf").remove(); 
    });
});
于 2012-05-18T09:55:56.307 に答える
0

IDがmatch1のテキストフィールドだけを配置する場合、フィールドが青色の場合にのみdivが削除されます。

$(function(){

   var isButtonClicked = false;
   $('button').one('click', function(){
      isButtonClicked = true;
   });

    $("#match1").blur(function()
    {
       if(!isButtonClicked)
            $("#divf").remove(); 
    });
});

テキストを入力するだけの場合は、すべてのテキストボックスの青色のdivが削除されます

    $(function(){
       var isButtonClicked = false;
       $('button').one('click', function(){
      isButtonClicked = true;
    });

    $("input[type=text]").blur(function()
        {
           if(!isButtonClicked) 
               $("#divf").remove(); 
        });
    });
于 2012-05-18T09:56:02.397 に答える