2011-07-27 45 views
0

有誰知道如何將自定義Javascript驗證與內置的Coldfusion驗證結合起來,因此自定義Javascript警報與CF一樣被放入相同的警報框?我知道CF向表單添加onsubmit事件,並創建一個_CF_check ['name of form']函數來執行一些js驗證,但是如何組合警報?使用自定義JavaScript驗證擴展ColdFusion CFFORM驗證

+0

根據您的需要,您可以使用'>調用自定義JavaScript函數。注意:javascript函數的簽名必須是'function yourFunction(formObject,formField,fieldValue)' – Leigh

+0

不幸的是,由於各種原因,我需要使用select而不是cfselect來進行cfform中的自定義js驗證。 – cam

+0

您仍然可以添加一個隱藏字段並將您的驗證功能綁定到該字段中。即。 IIRC在表格提交時仍會被調用。 – Leigh

回答

3

正如評論中所述,您可以使用onValidate屬性來調用自定義JavaScript函數。不像使用cfselect那樣優雅(你說你不能使用它)。但它確實結合了警報,並且不會侵入內部功能。如果由於某種原因你不能使用onValidate,那麼你可能將不得不深入到內部。

<script type="text/javascript"> 
    function yourFunction(frm, fld, value){ 
     // some pointless validation 
     var elem = document.getElementById('foo'); 
     return elem.options[elem.selectedIndex].value == 2; 
    } 
</script> 

<cfform name="theForm" method="post"> 
    <select name="foo" id="foo"> 
     <option value="0">apples</option> 
     <option value="1">oranges</option> 
     <option value="2">pear</option> 
     <option value="3">grape</option> 
    </select> 
    <cfinput type="hidden" name="fooValidate" onValidate="yourFunction" 
      message="You must select pears because we say so.."> 
    <input type="Submit" name="txtSubmit"> 
</cfform> 

注意:你的JavaScript功能的簽名必須是:

function yourFunction(formObject, formField, fieldValue) { 
     ... 
     // return true if validation was successful 
    } 
+0

哦,我沒有考慮這樣做,完美...非常感謝! – cam

0

我認爲你可以做到這一點的唯一方法就是從你自定義的函數中調用CF內建的JavaScript函數,就像下面的代碼一樣。

<script> 
    function myFunction (_CF_this) { 
     ..... 
     ..... 
     _CF_checkmyForm(_CF_this) // here is CF built-in function 
     ..... 
     ..... 
    } 
</script> 

<cfform name="myForm"> 
    <cfinput name="txtInput" required="Yes"> 
    <input type="Submit" name="txtSubmit"> 
</cfform> 
+0

我不認爲調用該函數是問題(它已在提交時自動調用)。問題是如何將JavaScript驗證警報合併爲一個。 – Leigh

+0

@Leigh你是對的。打電話是沒有問題的,他們都會(單獨)開火。問題是自動CF將被調用,並且這些警報將被整合到一個警報框中...如果這些警報通過,那麼它會檢查我的自定義JS並打開另一個警報框...而不是一個警報框。 – cam

+0

@cam - 查看我的答案。如果不深入內部,這是我能想到的最簡單的選擇。 – Leigh

0

其實我已經使用搬走CFFORM內置的驗證機制,並CFFORM整體,通過建立驗證邏輯在CFC方法中,並使用jQuery.ajax()遠程調用這些方法。這使您可以將驗證保留在一個地方,並使您可以將它用於客戶端驗證和服務器端驗證。