繁体   English   中英

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

[英]Extending Coldfusion CFFORM Validation with Custom JavaScript Validation

有谁知道如何将自定义Javascript验证与内置的Coldfusion验证结合使用,以便将自定义Javascript警报与CF警报放到同一警报框中? 我知道CF向表单添加了一个onsubmit事件,并创建了_CF_check ['表单名称']函数来进行一些js验证,但是我将如何组合警报?

如评论中所述,您可以使用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
  } 

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

实际上,通过在CFC方法中创建验证逻辑,并使用jQuery.ajax()远程调用它们,我实际上不再使用CFFORM的内置验证机制以及整个CFFORM。 这使您可以将验证放在一个地方,并使您可以将其用于客户端验证和服务器端验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM