2010-08-09 27 views
0

是否有可能發送一個JavaScript函數來測試表單字段是否發生了變化,然後將一個布爾值(bCheckField)傳遞給一個過濾器函數,它會告訴它實際執行檢查或跳過驗證並繼續?如果是這樣,我該如何解決這個問題?創建一個JS函數將布爾值發送到Coldfusion過濾器函數?

使用Coldfusion 8,MachII和Microsoft SQL。

+0

這是對AJAX的互動?或者只是在標準表單提交? – 2010-08-09 17:11:20

+0

只需提交標準表格即可...... – Alex 2010-08-09 17:41:49

回答

1

您可以將當前值存儲在隱藏字段中。

像這樣:

<input type="text" id="firstname" value="#firstname#"> 
<input type="hidden" id="old_firstname" value="#firstname#"> 

上後比較各自的標誌發送至CF.

+0

非常感謝!我將使用這種技術與MachII過濾器來循環並驗證該字段是否唯一:) – Alex 2010-08-09 18:10:16

+1

我建議不要在表單範圍中存儲事務,以確定數據庫端的驗證。請記住,例如,我可以使用FireFox插件來隱藏字段可見/可編輯。這就是爲什麼我建議一個持久的範圍。 – 2010-08-09 18:56:58

+0

正如Ben Doom在他的評論中指出的那樣,他的帖子不會像用戶輸入的數據一樣信任用戶輸入。它很容易被篡改。 如果這是客戶端驗證只是爲了向用戶以漂亮的格式向用戶顯示錯誤,那麼很好,如果這是您在訪問數據庫之前的最後一道防線,請不要使用此技術。 – jfrobishow 2010-08-09 19:18:27

2

最簡單的辦法,據我所知,是檢查你的複選框(或填充你的隱藏字段等)時的onChange()目標字段火災。

在另一方面,如果這是插入/更新SQL領域,我可能不會相信JS以允許用戶跳過驗證(除非它也跳過插入/更新)。您始終可以將原始字段數據存儲在持久範圍內,並在返回表單時執行比較服務器端。

+0

+1不僅僅依靠JS來處理那些會到達DB的東西。 – jfrobishow 2010-08-09 17:55:21

1

你可以爲onchange甚至可以指定一個事件處理程序。

例如:

var wasChanged = {}; 

inputElement.onchange = function() { wasChanged[this.id] = true; } 

function validateElement (element) { 
    if (wasChanged[element.id]) { 
     // validate 
    } 
} 
+0

這種方法的問題是,如果用戶更改了值,則會被標記。然後,如果用戶決定將其更改回原始值,它仍然保持標記。 – 2010-08-11 22:13:53

相關問題