2017-09-03 71 views
0

如何使用多重選擇器(「selector1,selector2,selectorN」)獲取.change()以在所有字段都不在焦點時觸發,而不是每次改變的領域之一變得焦點?.change()帶有多個字段爲每個已更改的字段啓動失焦

謝謝!

+0

你想要的東西就'change'只發生,如果沒有給定的元素集中? –

+0

@LouysPatriceBessette對!當用戶完成表單(並且沒有重點關注所有字段)時,我想要發生一些事情 – Emilio

回答

1

您需要change事件blur事件。

在下面的例子中,所有字段都將變成紅色對它們中的一個的模糊,如果沒有,則他們的beeing聚焦如果它們中的至少一個爲已改變。

var inputChanged = false; 
 

 
$(".test").on("change", function(){ 
 
    inputChanged = true; 
 
}); 
 
    
 
$(".test").on("blur", function(){ 
 
    var flag=true; 
 

 
    setTimeout(function(){ 
 
    
 
    // Check if one input is focussed 10 ms after that blur. 
 
    $(".test").each(function(){ 
 
     if($(this).is(":focus")){ 
 
     flag = false; 
 
     } 
 
    }); 
 

 
    // If no input focussed and at least one input changed. 
 
    if(flag && inputChanged){ 
 
     $(".test").css({"background-color":"red"}); 
 
    } 
 
    },10); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class="test"><br> 
 
<input class="test"><br> 
 
<input class="test"><br>

+0

我對此代碼有一些問題:如果用戶在第一個字段中輸入的內容比按「tab」三時間退出表格 – Emilio

+0

您想檢查是否所有輸入都已填滿? –

+0

不,不,我只想要.change()事件,但同時爲所有字段。 讓我解釋一下:如果至少有一個字段被更改,只要所有的字段都沒有焦點,我希望所有的字段都變成紅色。你的代碼的問題是,它只檢查最後一個焦點領域是否發生了變化。 – Emilio

相關問題