2013-05-09 94 views
2

我有幾個輸入字段和值。這是投影給用戶的。 用戶可以修改這些值並提交它們。 提交時,我需要檢查哪個輸入字段被修改。如何找到哪個輸入字段被修改?

我可以比較以前的字段和當前字段並檢查。但我試圖找到更多優化的方式來做到這一點。 我可以使用javascript,php,jquery和html技巧

+1

默認值是什麼,你究竟通過修改意味着比較?從何時起?你的意思是不同於數據庫存儲的值或其他東西? – 2013-05-09 18:12:55

+0

^^^ +1您的意思是客戶端變更或數據庫中的數據變化嗎? – ExceptionLimeCat 2013-05-09 18:19:16

回答

5
<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); 
}); 
+0

非常感謝。這正是我所期待的。再次感謝。 – Jithu 2013-05-09 18:28:15

+0

不客氣! – 2013-05-09 18:31:18

0

由於沒有給出代碼,因此可以比較輸入內容與現在的內容。

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推送到數組。

1

您可以創建2個不同的輸入,1個隱藏着像originalVal和1對每個輸入可見的類。

然後在提交你做這樣的事情:

$('input').each(function(){ 
    var currentVal = $(this).val(); 
    var originalVal = $(this).closest('.originalVal').val() 
    if(currentVal != originalVal){ 
      //This input has changed 
    } 
}) 
+0

但他說......「我可以比較以前的字段和當前字段並進行檢查,但我試圖找到更優化的方式來做到這一點,我可以使用JavaScript,PHP,jQuery和HTML技巧」 – FloatingCoder 2013-05-09 18:19:32

+0

那麼沒有優化的方式來做到這一點,因爲如果你使用'.change'事件,它會在他改變值時觸發,但如果你恢復舊值,輸入將被視爲改變,即使它不是...所以是啊在我看來,這是最優化的方式,我確認他的第一個方法是正確的。 – 2013-05-09 18:24:50

0

我會說你最好的選擇將是從輸入字段獲取初始值,再後來就對它們進行比較。然後,只需點擊提交按鈕即可進行比較。例如,把它放在$(document).ready()中的某個地方,這樣它將檢索初始值。

var oldValue=[]; 
$('input').each(function(){ 
    oldValue.push($(this).val()); 
}); 

然後,您可以稍後再點擊提交。

0

,你可以像這樣

for(var i in formObj) 
    if('value' in formObj[i] && formObj[i].value!=formObj[i].defaultValue){ 
     //do what ever here ... 
    }