2012-03-05 13 views
1

であれば、私は1 text boxを持っていると私はそのtext box上のデータを入力していますテキストボックスを自動リフレッシュ、私は何をしたいです:私は4 charactersに入り、skip that text box by pressing TAB keyはその後、1つのアラートが、その後"data should be more than 4 characters"とテキストとして来るかどうボックスはauto refreshedになります。入力されたデータが4文字以上の場合、警告は表示されません。私はonkeyupイベントで試していましたが、間違っている箇所があります。助けてください警告と長さが4

+0

「自動更新」とはどういう意味ですか? – ajax333221

+0

あなたのコードを表示できますか? –

+0

@ ajax333221自動更新は、単にテキストボックスが再び空になり、ユーザーがそのテキストボックスにデータを再度入力する必要があることを意味します。入力されたデータが4文字以上の場合はすべて正常ですが、入力されたデータが4または4未満の場合は、警告が表示され、テキストボックスも空になります – Tom

答えて

2

「テキストボックスが自動更新される」という意味がわからないので、そのフィールドにカーソルを戻したいと思うでしょう。限りアウトタブ移動するときに.change().blur()イベントをしたい値の長さをチェックなど:

$("input[type=text]").change(function() { 
    if (this.value.length <= 4) { 
     alert("Please enter more than 4 characters."); 
     this.focus(); 
     return false; 
    } 
}); 

デモ:http://jsfiddle.net/XHKRh/

blurイベントは、フォーカスがフィールドを離れるたびにトリガされます。変更イベントは、ユーザーが変更せずにフィールドからすぐに外に出ると再びトリガーされません。私はフォームの送信時に追加の検証と組み合わせて変更を使用する方がいいので、ユーザーはアラートで悩まされることはありません(実際はアラートを表示しませんが、フィールドに)。

+0

あなたの答えはありがたいですが、私はまだ次のテキストボックスに進むことができますが、警告が表示されています。次のテキストボックスに移動すると、あなたのフィドルで少し編集が必要だと思う。 – Tom

+0

私の更新された答えを見てください。 '.change()'の代わりに '.blur()'を使うと、あなたが望むことはできますが(私が私の更新で言ったように)私は別のアプローチを好みます。 – nnnnnn

+0

ok try try this – Tom

1

どのように約blur

var el = $('#textbox').blur(function(e) { 
    if (el.val().length > 4) { 
     return; 
    } 

    el.focus(); 
    alert('data should be more than 4 characters'); 
}); 

この技術は、ユーザーエクスペリエンスの低下になりことに注意してください。要素とインラインでメッセージを表示することは、ユーザーが他のものとやりとりするのを防ぐよりも望ましいことです。

+0

お返事ありがとうございました。あなたの回答をよく聞かせてください。 – Tom

0

あなたは興味深い可能性がありますいくつかのポイントがあります。

  • あなたはmaxlengthがあり、ユーザーはそれを をオフにすることができますよう、フォームを検証するためにJavaScriptのみに依存していると検証
  • をバイパスしてはなりません入力のプロパティ
  • ユーザー が他の方法でフォーカスを変更することができますので、あなたはおそらく、TABキーアクションを取得するのではなく、onblurを探している
+0

はい、あなたは正しいです、私はjavascriptにのみ頼るべきではない、どのように私はこの 'javascriptをオフに'問題を解決することができますか? – Tom

+0

@Tomサーバー側の言語で検証できます(私のお気に入りはPHPですが、他にもたくさんあります)。しかし、この余分な措置は、物事を注入することがあなたのために大きな問題になる生死の状況のときに使用してください。 – ajax333221

+0

「生死のとき」? _常にサーバー側のコードで検証する必要があります。 – nnnnnn

関連する問題