2017-04-05 87 views
-1

我有一個輸入域,它返回keyup上的計算輸出。問題是我只希望字段在所有輸入值都被填充的情況下執行函數。理想情況下,我通過在最後一個輸入字段上運行keyup函數然後返回值來完成此操作。僅當輸入值存在時才運行函數

但是,我還希望在任何字段值被編輯或更新時立即返回計算結果。

只有當所有的值都被填充後,我怎樣才能調用函數,而且在編輯值時能夠調用函數?

這是代碼:

$('#3').keyup(function(e) { 
 
    $('.a').val(getRandomNumber()); 
 

 
}); 
 

 
function getRandomNumber() { 
 
    return Math.random(); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="texty" id="1" /> <br> 
 
<input type="text" class="texty" id="2" /> <br> 
 
<input type="text" class="texty" id="3" /> <br> 
 
<input type="text" class="a" id="4" />

所以在上面的示例代碼中,我希望函數getRandomNumber當所有texty類的輸入值填補只叫(即不空)。但是,一旦所有的值都被填充了,如果我再次編輯任何字段,我想要再次調用該函數。我怎樣才能做到這一點?

回答

0

$('.texty').keyup(function(e) { 
 
    var getRandom = true; 
 
    $.each($('.texty'),function(key , value){ 
 
    (!$(this).val().length)? 
 
     getRandom = false:'' 
 
    }); 
 
    getRandom?$('.a').val(getRandomNumber()):''; 
 
}); 
 

 
function getRandomNumber() { 
 
    return Math.random(); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="texty" id="1" /> <br> 
 
<input type="text" class="texty" id="2" /> <br> 
 
<input type="text" class="texty" id="3" /> <br> 
 
<input type="text" class="a" id="4" />

+0

謝謝!這就像一個魅力。 – input

+0

你不喜歡'if'語句?你使用三元組是非常不尋常的。 – Barmar

+0

@Barmar這是一個不知何故的壞習慣:( –

2

$('#1').keyup(onkeyup); 
 
$('#2').keyup(onkeyup); 
 
$('#3').keyup(onkeyup); 
 

 
function onkeyup(ev) { 
 
    if ($('#1').val() && $('#2').val() && $('#3').val()) { 
 
    $('.a').val(getRandomNumber()); 
 
    } 
 
} 
 

 
function getRandomNumber() { 
 
    return Math.random(); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="texty" id="1" /> <br> 
 
<input type="text" class="texty" id="2" /> <br> 
 
<input type="text" class="texty" id="3" /> <br> 
 
<input type="text" class="a" id="4" />

相關問題