2012-04-23 3 views
0

私がしたいことは、ユーザーの入力をチェックし、ルールと一致するかどうかを確認するJavaScriptコードを作成し、「xxx is not」というテキストフィールドのすぐ隣にエラーメッセージを表示することです有効なエントリ "JSの即時検証

たとえば、最初の文字を大文字にし、その後に数字を付ける必要があり、特殊文字を使用できないという規則がある場合。

ユーザは「13da2343 *」のような形式で入力し、結果は「無効なエントリです。最初の文字は大文字で、特殊文字は無効なエントリです」。テキストフィールドのすぐ隣に表示する必要があります。

私は自分自身でこれを開始する方法についての手掛かりはありません。私はこれは私が私のウェブサイトのために、これまで持っている全体のコードではJavaScript

EDIT

に新しいです、助けてください。私は、入力された特定の文字が無効であり、それ自体がテキストフィールドの隣にあると言う方法を知らない。

<!DOCTYPE html> 
<html> 
<head> 


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title> THING </title> 
<meta name="Author" content="Dhruvin Desai" /> 
<link rel="stylesheet" type="text/css" href="style.css" /> 

<script type='text/javascript'>//<![CDATA[ 
window.onload=function(){ 
document.forms[0].addEventListener('submit', function(event) { 
    event.preventDefault(); 
    var input = document.getElementsByName('a')[0]; 

    if (~input.value.search(input.getAttribute('pattern'))) { 
     alert('Is valid!'); 
    } else { 
     alert('It's invalid...'); 
    } 
}); 
}//]]> 

</script> 

</head> 

<body> 
<div id="wrapper"> 
    <div id="response"> 
    <form id="form" action="#" > 
    <fieldset> 
    <LEGEND><br>THING</br></LEGEND> 

    <!-- Input Fields --> 

    <label for="name"> Username </label> 
    <input type="text" name="a" value="" id="name" autofocus="autofocus" autocomplete="off" required="required" placeholder="Username" pattern="^[A-Z][A-Za-z]{0,11}$" onkeyup="check(this)" /> 
    <span id="confirmMessage" class="confirmMessage"></span> 

    <input type="submit" value="Submit" class="submit" /> 

    </fieldset> 
    </form> 
</div> 

</body> 

EDIT 2

私は動作しますが、唯一、私は最初の文字だけのために必要大文字を、受け入れる新しいスクリプトを追加しました。

<!DOCTYPE html> 
<html> 
<head> 


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title> IT 202 - Assignment 3 </title> 
<meta name="Author" content="Dhruvin Desai" /> 
<link rel="stylesheet" type="text/css" href="style.css" /> 

</head> 
<body> 

<div id="wrapper"> 
    <div id="response"> 
    <form id="form" action="insert_form.php"> 
    <fieldset> 
    <LEGEND><br>Assignment 3</br></LEGEND> 

    <!-- Input Fields --> 

    <label for="name"> Username </label> 
    <input name="name" id="name" autofocus="autofocus" autocomplete="off" required="required" placeholder="Username" onkeyup="check(this.value)" /> 

    <input type="submit" value="Submit" class="submit" /> 

    </fieldset> 
    </form> 
</div> 
<script type="text/javascript"> 

function check(string) 
{ 
    loop: for (i = 0; i < string.length; i++) 
    { 
     var res = string.substring(i, i + 1).match(/[A-Z][A-Za-z]{0,11}/); 

     if (!res) 
     { 
      alert("Error on position " + (i + 1) + ":\n This character is no Letter: "+string.substring(i, i + 1)); 
      break loop; 
     } 


    } 

} 
    </script> 
</body> 

答えて

0

あなたはpattern属性を使用して正規表現式を渡すことができますを確認し 正規表現を使用することができます。古いブラウザでは、h5fまたはwebshimのようなポリフィラーを使用できます。

+0

私はエラーメッセージがテキストフィールドの隣に瞬時に表示されるようにしたいので、ユーザーは入力した内容が間違っていることを知っています。 – shade917

+0

webshimsには、あなたにこの機会を与えるインヴェイジチェンジとバリデーションイベントがあります。 – Flops

0

このタイプの「リアルタイム」検証は、通常、各キーを押すごとに起動(リセット)されるタイマーで行われます。ユーザーの最後のキーが押されてからタイマーが切れた場合、有効性が確認されます。

遅延が250ミリ秒です。 JavaScriptを初めてお使いの場合は、window.setTimeoutwindow.clearTimeoutを学習する必要があります。

擬似コード(そうでない場合、私はあなたのためのすべての作業をやっているでしょう):実際の検証自体については

 
when key pressed: 
    if existing timeout: 
     cancel existing timeout 

    fire new timeout 

when timeout expired: 
    do validation 

    if validation failed: 
     set error message 
     show error message 
    else: 
     hide error message 

、あなたは単に検証を自分で行うにはいくつかのコードを追加し、または検証であれば可能正規表現にふさわしい場合は、正規表現を使用できます。このためにRegExpオブジェクトを調べる必要があります。

フィールドの横にエラーメッセージを表示するには、エラーコンテナをマークアップに埋め込んで最初に非表示にします。エラーが発生すると、内容を入力してコンテナを表示します。うまくいけば、これを行うのに十分なCSSを知っているはずです。

0

フォームのフィールドを定期的にチェックしているフォームに「リスナー」を追加する方法があります。私はthis jsfiddleでそれをしました、それはあなたのためかもしれない?

+0

すべてのコードをコピーしてブラウザでテストしようとすると、JavaScriptコードがうまく動作しません。 – shade917