【问题标题】:How to validate characters ONLY in ColdFusion CFForm?如何仅在 ColdFusion CFForm 中验证字符?
【发布时间】:2009-07-07 16:15:51
【问题描述】:

我有一个非常简单的带有单个表单字段的 cfform:

<cfform action="asdf.cfm" method="post">
  <cfinput name="fieldName" type="text" size="20" maxlength="20" required="yes" validate="regex" pattern="[A-Za-z]" message="Only characters are allowed." />
  <input type="submit" name="btnSubmit" value="check" />
</cfform>

理论上,这将只允许 A-Z 和 a-z 任意组合,并且其中必须包含一些内容。

实际上,我可以输入“a a”并且 javascript 验证不会抱怨。由于“空格”字符不在 A-Z 中,也不在 a-z 中,这是怎么回事?

谢谢! 克里斯

【问题讨论】:

    标签: regex validation coldfusion cfform cfinput


    【解决方案1】:

    您缺少字符串开头和结尾锚点:

    ^[A-Za-z]$
    

    或者,更有可能:

    ^[A-Za-z]{1,20}$
    

    您的示例,已修改:

    <cfform action="asdf.cfm" method="post">
      <cfinput name="fieldName" type="text" size="20" maxlength="20" required="yes" validate="regex" pattern="^[A-Za-z]{1,20}$" message="Only characters are allowed." />
      <input type="submit" name="btnSubmit" value="check" />
    </cfform>
    

    没有这些锚,正则表达式只需要匹配任何地方,它不需要匹配完全

    【讨论】:

      【解决方案2】:

      我个人会避免使用内置的coldfusion javascript。如果您自己滚动,您将拥有更多的控制权,它将使您能够以除警告框之外的其他方式显示错误。

      <script>
      function checkit() {
          var v = document.getElementById("text1").value;
          if(!v.match(/^[a-zA-Z]+$/)) {
              alert(v + ' contains invalid characters');
              return false;
          }
          return true;
      }
      </script>
      <form onsubmit="return checkit()">
      <input type="text" id="text1">
      <input type="submit">
      </form>
      

      【讨论】:

      • 感谢您的选择(和示例代码)。现在,对我们来说,警告框就足够了。
      • 对于其他正在寻找更好的验证方法的人,我会推荐 jquery 的验证功能。简单而不显眼,但功能强大且可自定义。
      • 我支持 jquery 的建议。我没有提到它,因为 javascript 已经超出了问题的范围,我想保持简单。
      【解决方案3】:
      <script>
      function checkit() {
          var v = document.getElementById("text1").value;
          if(!v.match(/^[a-zA-Z\\ \\.\\]+$/)) {
              alert(v + ' contains invalid characters');
              return false;
          }
          return true;
      }
      </script>
      <form onsubmit="return checkit()">
      <input type="text" id="text1">
      <input type="submit">
      </form>
      

      这里也可以输入和指向,但我必须怎么做才能协调 ä å ö。

      当然感谢大家的帮助,你帮了很多忙。

      【讨论】:

        【解决方案4】:

        我在寻找自己的解决方案时偶然发现了这篇文章。需要一种非侵入性的方式来防止人们在一个字段中通过数字输入任何内容,而在其他字段中只输入字母、数字或空格。我不能使用 pattern="9999" 作为数字,因为它不是必填字段,如果他们通过该字段进行标记,人们会“大喊大叫”。同样,不能将 pattern="xxx" 用于字母/数字字段,因为我还需要允许空格。

        从这篇文章中跳出并使用以前的程序员为该客户端开发的 javascript,我想出了这些漂亮的处理程序,我想我会分享以防其他人需要这个优雅的解决方案,另外,因为有时我会忘记并且能够再次找到这个。

        在您包含或包含在标签中的 .js 文件中:

            function numChecker(e)
            {
              if (!e.value.match(/^[0-9]+$/))
              {
                e.value = e.value.substring(0.e.value.length -1 );
                e.focus();
                return false;
              }
              return true;
            }
            function charChecker(e)
            {
              if (!e.value.match(/^[a-zA-Z0-9\ ]+$/))
              {
                e.value = e.value.substring(0.e.value.length-1);
                e.focus();
                return false;
              }
              return true;
            }
        

        那么您的 input 或 cfinput 字段的属性中将包含 OnKeyUp="numChecker(this)"OnKeyUp="charChecker(this)"

        当人们键入时,如果他们输入了无效字符,此脚本将启动并简单地删除该错误字符。没有额外的按钮可以点击或提示关闭。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-03
          • 1970-01-01
          • 1970-01-01
          • 2013-12-11
          • 1970-01-01
          相关资源
          最近更新 更多