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

個人的には、組み込みのcoldfusionjavascriptの使用は避けたいと思います。自分でロールすると、より詳細に制御できるようになり、アラートボックス以外の方法でエラーを表示できるようになります。

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

ここにも入力とポイントが可能ですが、私がどのようにすれば、äåöを認識しなければなりませんか。

もちろん、すべての助けに感謝します、あなたはとても助けます。

于 2010-11-24T09:06:10.707 に答える
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 に答える