是否有可能發送一個JavaScript函數來測試表單字段是否發生了變化,然後將一個布爾值(bCheckField)傳遞給一個過濾器函數,它會告訴它實際執行檢查或跳過驗證並繼續?如果是這樣,我該如何解決這個問題?創建一個JS函數將布爾值發送到Coldfusion過濾器函數?
使用Coldfusion 8,MachII和Microsoft SQL。
是否有可能發送一個JavaScript函數來測試表單字段是否發生了變化,然後將一個布爾值(bCheckField)傳遞給一個過濾器函數,它會告訴它實際執行檢查或跳過驗證並繼續?如果是這樣,我該如何解決這個問題?創建一個JS函數將布爾值發送到Coldfusion過濾器函數?
使用Coldfusion 8,MachII和Microsoft SQL。
您可以將當前值存儲在隱藏字段中。
像這樣:
<input type="text" id="firstname" value="#firstname#">
<input type="hidden" id="old_firstname" value="#firstname#">
上後比較各自的標誌發送至CF.
非常感謝!我將使用這種技術與MachII過濾器來循環並驗證該字段是否唯一:) – Alex 2010-08-09 18:10:16
我建議不要在表單範圍中存儲事務,以確定數據庫端的驗證。請記住,例如,我可以使用FireFox插件來隱藏字段可見/可編輯。這就是爲什麼我建議一個持久的範圍。 – 2010-08-09 18:56:58
正如Ben Doom在他的評論中指出的那樣,他的帖子不會像用戶輸入的數據一樣信任用戶輸入。它很容易被篡改。 如果這是客戶端驗證只是爲了向用戶以漂亮的格式向用戶顯示錯誤,那麼很好,如果這是您在訪問數據庫之前的最後一道防線,請不要使用此技術。 – jfrobishow 2010-08-09 19:18:27
最簡單的辦法,據我所知,是檢查你的複選框(或填充你的隱藏字段等)時的onChange()目標字段火災。
在另一方面,如果這是插入/更新SQL領域,我可能不會相信JS以允許用戶跳過驗證(除非它也跳過插入/更新)。您始終可以將原始字段數據存儲在持久範圍內,並在返回表單時執行比較服務器端。
+1不僅僅依靠JS來處理那些會到達DB的東西。 – jfrobishow 2010-08-09 17:55:21
你可以爲onchange
甚至可以指定一個事件處理程序。
例如:
var wasChanged = {};
inputElement.onchange = function() { wasChanged[this.id] = true; }
function validateElement (element) {
if (wasChanged[element.id]) {
// validate
}
}
這種方法的問題是,如果用戶更改了值,則會被標記。然後,如果用戶決定將其更改回原始值,它仍然保持標記。 – 2010-08-11 22:13:53
這是對AJAX的互動?或者只是在標準表單提交? – 2010-08-09 17:11:20
只需提交標準表格即可...... – Alex 2010-08-09 17:41:49