2011-07-27 44 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()远程调用这些方法。这使您可以将验证保留在一个地方,并使您可以将它用于客户端验证和服务器端验证。