2017-04-20 18 views
-3

我有一個命令來做到這一點,但這個命令不僅獲得最後一個值獲取所有元素點擊或鍵入的變化。它有可能獲得最後一個值點擊或按下在javascript中的一個命令在身體的所有元素?

我只需要得到最後一次點擊或輸入的值,這可能嗎?

這是我的命令

$('body').on("click keypress",function(e){console.log(e.target.value);}); 

例如目標的輸入元素的值獲得最後的類型化值或在所選擇的元件得到的值或選擇的形式。

我的命令得到

input1 

typed a get a input 1 

typed b get ab input 1 


typed c get c input 2 

typed f get abf input 1 

typed d get cd input 2 

select check box value options m get m 

我需要知道我可以如何與一個命令來獲得在這個例子中僅獲得最後一部分

輸入2值CD 輸入1值ABF 檢查值m

例如,如果我選擇dropdown my command get val紅色並選擇相同的下拉菜單再次獲得藍色,然後我的命令記錄值紅色和藍色;但我只需要持續存在於體內

我reefeer最近修改的值或元素的所有元素(下拉列表,複選框或輸入;等等)

+1

是什麼最後的值是什麼意思? – evolutionxbox

+1

目標的值,例如在輸入元素中獲取最後一個類型值或在選擇元素中獲取值或選擇表格 – zzero

+1

這個監控每個變化並獲得我需要的每個值只需要最後一個值 – zzero

回答

2

您可以輕鬆地將它們存儲在一個對象。我的方法唯一的問題是他們都需要不同的類別或ID。真正的問題是,爲什麼要採取這種方法呢?

$(document).ready(function() { 
 

 
    var last_data = {}; 
 

 
    function store_update(id_class, value) { 
 
    if (value !== last_data[id_class]) { 
 
     last_data[id_class] = value 
 
    }; 
 
    console.log(last_data); 
 
    } 
 

 
    function getID(obj) { 
 
     try { 
 
      var id_class = $(obj).attr('id'); 
 
      if (!id_class) { 
 
      id_class = $(obj).attr('class'); 
 
      } 
 
      return id_class; 
 
     } catch (ex) { 
 
     return undefined; 
 
     } 
 
    } 
 

 
    $('input[type="text"], textarea').on('keyup', function(e) { 
 
    var id_class = getID(this); 
 
    if (id_class) { 
 
     store_update(id_class, e.key); 
 
    } 
 
    }); 
 
    
 
    $('input[type="checkbox"]').on('change',function() { 
 
    var id_class = getID(this); 
 
    if (id_class) { 
 
     store_update(id_class, $(this).prop('checked')); 
 
    } 
 
    }); 
 
    
 
    $('select').on('change',function() { 
 
    var id_class = getID(this); 
 
    if (id_class) { 
 
     store_update(id_class, this.value); 
 
    } 
 
    }); 
 

 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type='text' class='inp1' /> 
 
<input type='text' class='inp2' /> 
 
<input type='text' class='inp3' /> 
 
<input type='text' class='inp4' /> 
 
<input type='text' class='inp5' /> 
 
<input type='text' class='inp6' /> 
 
<input type='text' class='inp7' /> 
 
<input type='text' class='inp8' /> 
 
<input type='text' class='inp9' /> 
 
<input type='text' class='inp10' /> 
 
<select class='myselect'> 
 
<option value='1'>test 1</option> 
 
<option value='2'>test 2</option> 
 
<option value='3'>test 3</option> 
 
</select> 
 
<input type='checkbox' class='inp11' /> 
 
<input type='checkbox' class='inp12' />

如果不正確,請說明更加清晰。

---編輯---

如果OP只想最後提交的價值元素,然後使用

$(document).ready(function() { 
 

 
    $('input, textarea, select').on('change', function() { 
 
    
 
    if ($(this).is('[type="text"], select')) { 
 
     console.log('You just changed my value to "' + this.value + '"'); 
 
    } else if ($(this).is('[type="checkbox"]')) { 
 
     console.log('You just flagged my value to "' + this.checked + '"'); 
 
    } 
 
    }); 
 
    
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type='text' class='inp1' /> 
 
<input type='text' class='inp2' /> 
 
<input type='text' class='inp3' /> 
 
<input type='text' class='inp4' /> 
 
<input type='text' class='inp5' /> 
 
<input type='text' class='inp6' /> 
 
<input type='text' class='inp7' /> 
 
<input type='text' class='inp8' /> 
 
<input type='text' class='inp9' /> 
 
<input type='text' class='inp10' /> 
 
<select class='myselect'> 
 
    <option value='1'>test 1</option> 
 
    <option value='2'>test 2</option> 
 
    <option value='3'>test 3</option> 
 
    </select> 
 
<input type='checkbox' class='inp11' /> 
 
<input type='checkbox' class='inp12' />

+0

非常感謝您的回覆;問題在於,這不包括例如複選框或下拉選擇元素;這得到鍵入的元素,我需要得到的最後一個元素VALUE輸入或檢查或選擇所有元素與一個命令 – zzero

+0

我的命令得到這個唯一的問題是我的命令得到這個,但也得到舊值不僅是最後的值 – zzero

+0

例如如果我選擇下拉我的命令獲取值紅色,並再次選擇相同的下拉得到藍色,然後我的命令記錄值紅色和藍色;但我只需要最後一個存在於主體 – zzero

相關問題