4

我有一个非常简单的带有单个表单字段的 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>

从理论上讲,这将只允许 AZ 和 az 任意组合,并且其中必须包含一些内容。

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

谢谢!克里斯

4

4 回答 4

13

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

^[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>

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

于 2009-07-07T16:28:16.827 回答
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>
于 2009-07-07T16:35:44.473 回答
1

在我寻找自己的解决方案时遇到了这篇文章。需要一种非侵入性的方式来防止人们在一个字段中通过数字输入任何内容,而在其他字段中只输入字母、数字或空格。我不能使用 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)"在其属性中。

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

于 2014-02-21T20:53:36.213 回答
1
<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>

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

当然感谢所有的帮助,你帮助了很多。

于 2010-11-24T09:06:10.707 回答