代码之家  ›  专栏  ›  技术社区  ›  Dennis Williamson

如何在ColdFusion表单中验证整数和范围?

  •  4
  • Dennis Williamson  · 技术社区  · 17 年前

    <cfinput 
        type = "Text" 
        name = "Num" 
        value = "0" 
        validate = "range,integer" 
        range = "0,1000" 
        validateAt="onBlur,onSubmit" 
        required = "yes" 
        message = "Invalid Value" 
    >
    

    这是自动生成的html/JS代码:

    <input 
        name="Num" 
        id="Num"
        type="text" 
        value="0" 
        onblur="if( !_CF_hasValue(this, 'TEXT', false) 
        && 
        !_CF_checkrange(this.value,0.0,1000.0, true) 
        ||
        !_CF_checkinteger(this.value, true) )
        { _CF_onErrorAlert(new Array('Invalid Value')); }" 
    />
    

    OnSubmit使用单独的自动生成的JS进行处理并正常工作。

    3 回复  |  直到 17 年前
        1
  •  3
  •   Tomalak    17 年前

    查看创建的JavaScript,逻辑中有一个错误。

    目前是:

    if (!has_value && !in_range || !is_integer) show_error()
    

    但我认为应该是:

    if (!has_value || !in_range || !is_integer) show_error()
    

    && || ,如果其他两个返回,则原始表达式中的第三个检查永远不会执行 true

    从外观上看,我会暂时说这是一个bug。您是否缺少任何CF补丁?也许这个问题已经解决了?

        2
  •  0
  •   JoelFan    17 年前

    从生成的JS来看,它显然是在尝试执行这两种验证。如果它不工作,您可能需要在Firebug中调试JS,以查看到底发生了什么。

        3
  •  0
  •   Ben Doom    17 年前

    如果范围/整数验证不起作用,可以使用正则表达式进行验证

    ^1?\d{1,3}$
    

    这意味着“字符串的开头,可选1,1-3位,字符串的结尾”。

    未经测试,您的里程可能会有所不同。

    推荐文章