我有幾個輸入字段和值。這是投影給用戶的。 用戶可以修改這些值並提交它們。 提交時,我需要檢查哪個輸入字段被修改。如何找到哪個輸入字段被修改?
我可以比較以前的字段和當前字段並檢查。但我試圖找到更多優化的方式來做到這一點。 我可以使用javascript,php,jquery和html技巧
我有幾個輸入字段和值。這是投影給用戶的。 用戶可以修改這些值並提交它們。 提交時,我需要檢查哪個輸入字段被修改。如何找到哪個輸入字段被修改?
我可以比較以前的字段和當前字段並檢查。但我試圖找到更多優化的方式來做到這一點。 我可以使用javascript,php,jquery和html技巧
<input id="input1" value="someValue" type="text">
<input id="input2" value="someValue" type="text">
腳本:
$('input').on('change',function(){
var id = $(this).attr('id');
alert("input field is modified : ID = " + id);
});
非常感謝。這正是我所期待的。再次感謝。 – Jithu 2013-05-09 18:28:15
不客氣! – 2013-05-09 18:31:18
由於沒有給出代碼,因此可以比較輸入內容與現在的內容。
HTML輸入:
<input type="text" id="testInput" value="DB Value"/>
jQuery的
var modifiedInputs = [];
var oldVal = "";
$("#testInput").focus(function() {
oldVal = this.value;
}).blur(function() {
console.log("Old value: " + oldVal + ". New value: " + this.value);
//If different value, add to array:
if (this.value != oldVal) {
modifiedInputs.push(this.id);
}
});
小提琴:http://jsfiddle.net/tymeJV/tfmVk/1/
編輯:把它更進一步,在輸入的變形例中,如果改變後的值是從不同原始的,它將元素ID推送到數組。
您可以創建2個不同的輸入,1個隱藏着像originalVal
和1對每個輸入可見的類。
然後在提交你做這樣的事情:
$('input').each(function(){
var currentVal = $(this).val();
var originalVal = $(this).closest('.originalVal').val()
if(currentVal != originalVal){
//This input has changed
}
})
但他說......「我可以比較以前的字段和當前字段並進行檢查,但我試圖找到更優化的方式來做到這一點,我可以使用JavaScript,PHP,jQuery和HTML技巧」 – FloatingCoder 2013-05-09 18:19:32
那麼沒有優化的方式來做到這一點,因爲如果你使用'.change'事件,它會在他改變值時觸發,但如果你恢復舊值,輸入將被視爲改變,即使它不是...所以是啊在我看來,這是最優化的方式,我確認他的第一個方法是正確的。 – 2013-05-09 18:24:50
我會說你最好的選擇將是從輸入字段獲取初始值,再後來就對它們進行比較。然後,只需點擊提交按鈕即可進行比較。例如,把它放在$(document).ready()中的某個地方,這樣它將檢索初始值。
var oldValue=[];
$('input').each(function(){
oldValue.push($(this).val());
});
然後,您可以稍後再點擊提交。
,你可以像這樣
for(var i in formObj)
if('value' in formObj[i] && formObj[i].value!=formObj[i].defaultValue){
//do what ever here ...
}
默認值是什麼,你究竟通過修改意味着比較?從何時起?你的意思是不同於數據庫存儲的值或其他東西? – 2013-05-09 18:12:55
^^^ +1您的意思是客戶端變更或數據庫中的數據變化嗎? – ExceptionLimeCat 2013-05-09 18:19:16