使用自定义JavaScript验证扩展Coldfusion CFFORM验证

使用自定义JavaScript验证扩展Coldfusion CFFORM验证,javascript,coldfusion,Javascript,Coldfusion,是否有人知道如何将自定义Javascript验证与内置Coldfusion验证结合起来,以便将自定义Javascript警报与CF警报滚动到同一个警报框中?我知道CF向表单中添加了一个onsubmit事件,并创建了一个_CF_check['name of form']函数来执行一些js验证,但是我如何组合警报呢?我认为唯一的方法是从自定义函数调用CF build in javascript函数,如下面的代码 <script> function myFunction (_CF_

是否有人知道如何将自定义Javascript验证与内置Coldfusion验证结合起来,以便将自定义Javascript警报与CF警报滚动到同一个警报框中?我知道CF向表单中添加了一个onsubmit事件,并创建了一个_CF_check['name of form']函数来执行一些js验证,但是我如何组合警报呢?

我认为唯一的方法是从自定义函数调用CF build in 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>

函数myFunction(\u CF\u this){
.....
.....
_CF\u checkmyForm(\u CF\u this)//这里是CF内置函数
.....
.....
}

我认为唯一的方法就是从自定义函数调用CF build-in-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>

函数myFunction(\u CF\u this){
.....
.....
_CF\u checkmyForm(\u CF\u this)//这里是CF内置函数
.....
.....
}

如注释中所述,您可以使用
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>

如注释中所述,您可以使用
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>

实际上,我已经不再使用CFFORM的内置验证机制,也不再使用CFFORM,而是在CFC方法中创建验证逻辑,并使用
jQuery.ajax()
远程调用这些方法。这允许您将验证放在一个地方,并允许您将其用于客户端和服务器端验证。

实际上,我已经不再使用CFFORM的内置验证机制,而是在CFC方法中创建验证逻辑,并使用
jQuery.ajax()
远程调用这些方法。这允许您将验证保留在一个位置,并允许您将其用于客户端和服务器端验证。

根据需要,您可以使用
调用自定义javascript函数。注意:javascript函数的签名必须是
function yourFunction(formObject、formField、fieldValue)
不幸的是,出于各种原因,我需要在cfform中使用select而不是cfselect来进行自定义js验证。您仍然可以添加一个隐藏字段,并将验证函数挂接到该字段中。艾。IIRC提交表单时仍将调用它。根据需要,您可以使用
调用自定义javascript函数。注意:javascript函数的签名必须是
function yourFunction(formObject、formField、fieldValue)
不幸的是,出于各种原因,我需要在cfform中使用select而不是cfselect来进行自定义js验证。您仍然可以添加一个隐藏字段,并将验证函数挂接到该字段中。艾。IIRC在提交表单时仍将调用它。我认为调用该函数不是问题(提交时已自动调用该函数)。问题是如何将javascript验证警报组合成一个警报,如果您是正确的。给他们打电话没问题,他们两个都会(分别)发火。问题是将调用自动CF框,这些警报将被滚动到一个警报框中…如果这些警报通过,则它将检查我的自定义JS并打开另一个警报框…而不是所有警报框。@cam-请参阅我的答案。这是我能想到的最简单的选项,不必深入内部。我不认为调用该函数是个问题(它在提交时已经被自动调用)。问题是如何将javascript验证警报组合成一个警报,如果您是正确的。给他们打电话没问题,他们两个都会(分别)发火。问题是将调用自动CF框,这些警报将被滚动到一个警报框中…如果这些警报通过,则它将检查我的自定义JS并打开另一个警报框…而不是所有警报框。@cam-请参阅我的答案。这是我能想到的最简单的选择,不必深入内部。哦,我没有想过这样做,太好了……非常感谢!哦,我没想过那样做,太好了……非常感谢!