2011-12-28 10 views
1

プログラミング例 onkeyupのまたはJavaScriptイベント発行れるonkeypress - パスワードステータスの更新

(W3学校からの)方法下記(W3学校からの)プログラミングの質問まずがいいと簡単ですが、それは彼らのウェブサイト上で動作しますが、私は」本当に何かに混乱しています。

onkeypress="return noNumbers(event)" 

なぜ機能の前に戻りますか?それは何をするためのものか?あなたがその答えを知っているなら、その情報をどうやって見つけましたか?私の推測では、私のイベントがそれを「インターラプト」して以来、キーストロークを処理し続けることができるのですか?

- 私は 'イベント'が何であるかを見てきました。それはキーワードではないようです。私はそれが何であるかを見つけようと時間を費やしました。コード例のどこにでも割り当てられていないようです。通常、その場所に「this」と表示されます。割り当てられていない変数の場合、常にイベントハンドラを渡しますか?混乱...私はあなたがタイプとしてパスワード強度チェッカーを作りたい私はその機能

でやりたい

。私はその例を見ていたので、キーをキャプチャする方法(クロスブラウザーと最小IE7)を理解することができました。私の考えは...

<input type="password" name="pword" maxlength="50" size="50" id="field_pword" onkeyup="PasswordStrength(name, 8, 'relaxed')" onblur="CheckField(name, 8, 1)"> 

注:はい、私はそれは、HTMLの外のイベントハンドラを割り当てることが良いでしょう知っているが、それは、インラインでない限り、私はそれに変数を渡す方法を見ることができませんでした。私は初心者ですので、何かを見落としているかもしれませんが...なぜHTMLでそれを行うのですか。

、私はどのように名前を渡していますか?関数にpwordを送信しますが、私はそこで何か間違っていますか?私はそれを一定の文字列にする必要がありますか?それはそのまま動作しますが、時には何かが機能しているという理由で正しいとは限りません。 :)

onkeyup="PasswordStrength('pword', 8, 'relaxed')" onblur="CheckField('pword', 8, 1)"> 

私のチェックフィールド機能は動作します(私はすべてのフィールドの後に使用します)。私は最近PasswordStrengthで追加しました。私の質問は...私の新しい関数はイベントハンドラを渡していないので、どのようなキーが押されているかを確認するにはどうすればいいですか?これはできますか?

onkeyup="PasswordStrength(name, 8, 'relaxed', event)" 

またはそれは読んでください...

onkeyup="return PasswordStrength(name, 8, 'relaxed', event)" 

私は、その方法が何であれ「イベント」渡すことができない場合、私は正確に押されたキーが大きいずにいたものを手に入れることができます私の関数の中コードの混乱?私が学んでいるので、できるだけシンプルにするための例が必要です(してください)。私の機能を使用して

私は、このようにそれを行うつもりだったが、私はまだ私からいくつかの知識を引っ張った押されたものをキー...

function PasswordStrength(sField, iMinLength, sStrength, e?) 
{ 
var form = document.forms[0]; 
var gc = form[sField].value; 
    // once I have the value I can do checking but it would be nice to have WHAT key 
    // was pressed 
    // the e? above is where I was thinking of passing the event 

W3例を取得する方法がわかりません。 ..誰かが私は、「弱」、「OK」、「グッド」、「パーフェクト」またはのために、これらの線に沿って何かを言うためにパスワードフィールドの横にinnerHTMLプロパティを使用してテキストを変更しようとしていた入力されたよう

function noNumbers(e) 
{ 
var keynum; 
var keychar; 
var numcheck; 

if(window.event) // IE 
{ 
keynum = e.keyCode; 
} 
else if(e.which) // Netscape/Firefox/Opera 
{ 
keynum = e.which; 
} 
keychar = String.fromCharCode(keynum); 
numcheck = /\d/; 
return !numcheck.test(keychar); 
} 
</script> 

<form> 
Type some text (numbers not allowed): 
<input type="text" onkeypress="return noNumbers(event)" /> 
</form> 

</body> 
</html> 

パスワードの状態私はそれをやりたいのですが、Googleがフィールドの左側にあるグラフィックでそれをどうやって行うのですか、それを簡単にやる方法はわかりません。笑。

私の方法は修正可能ですか?あなたは私が知らないこれを行うためのより良い方法がありますか?とても有難い。知恵の注入を待っています...

+0

あなたの質問を要約することができますか、多分2つの質問に分解することができますか?私はあなたを助けたいと思いますが、これは消化するのが大変です。私は他人が同意するだろうと推測しています。犯罪ではありません。 –

+0

ちょっとそこに - jqueryの投票の質問を上から削除して、もっと小さくしました。私は別の日jqueryについて聞くことができます。私はちょうどあなたが入力するとパスワードの強さをチェックするパスワード強度チェッカーを作ろうとしています。コード@は私がw3の学校から見ていたものですが、私は彼らがいくつかのことをした方法を理解しませんでした途中で、私が試していたものですが、自分のコードの部分を私がどのように使っているかはわかりません。私はチェックしていたw3の例です。私ができる限り最善を尽くして... – PerryCS

+0

OK - すばらしいGoogle検索の後、私はここから始めます:http://www.webresourcesdepot.com/10-password-strength-meter-scripts-for-a-better-registration-interface/ –

答えて

1

1) "return"という語は、関数がfalseを返した場合、それはイベントに戻され、キーストロークがブラウザによって処理されるのを止めますイベントがオンの場合は入力フィールド)。

2)eventは、イベントが発生したようなキーWaが押されたものとイベントに関する情報を含むEventオブジェクト、など

3)あなたがnameを渡しているかはい、それは悪いですあなたがそれを渡していないからです。代わりにthis.nameを使用してください。

4)この場合、キーストロークがテキストボックスに追加されないようにしようとしていないため、returnは必要ありません。同様に、this.valueを渡してテキストボックスの内容を取得できるので、eventを渡す必要はありません。

5)this.namethis.value、またはその他の値の代わりにthisを渡すことができます。関数内で、単一の引数からプロパティを取得します。

6)this.valueで値全体を渡すと、そのテストを実行できます。 Ctrl+Vのようなものがあなたを完全に縛りつけてしまうように、どのキーが押されたのかを知る必要は全くありません。

7)<div>の幅と背景色を変更して、種類の強度バーインジケータを作成することができます。ちょうどあなたの最初のプログラミングの質問に

2

  • あなたの提案が正しいとは、イベント の内部で値を返すためには、値の内容に応じたアクションを中断することができます。 falseonclick にすると終了しません。だから<a href="http://test.de" onclick="return false;">linkname</a>あなたに何かにリンクしないでください JavaScriptが有効になっています。
  • eventは、実際のイベントに実行される前に宣言された変数です。以下の説明を参照してください。

JavaScriptのeventhandlerアトリビュートは分かっていますか? あなたはそれが単にこの無名関数を作成するための別の調整方法だタグにonclick属性を割り当てた場合、彼らは機能、すなわち

document.createElement('div').onclick = function(event){ 
    //do something... 
    return true || false; 
}; 

です。従って

<input onclick="this.value = 'can\'t click me :P Mouse X: ' + event.clientX; return false;" type="text" id="ip" /> 

は、引数がeventの匿名関数を作成したかのように動作します。

window.onload = function(){ 
    document.getElementById('ip').onclick = function(event){ 
    this.value = 'can\'t click me :P Mouse X: ' + event.clientX; return false; 
    }; 
}; 

これは遅延割り当てを除いて全く同じように動作します。

thisキーワードは、アクセスしているプロパティ関数を持つ所有者オブジェクトまたはapply/callメソッドに渡すオブジェクトです。この場合、それは明らかに所有者である - DOM要素です。したがってthis.valueinputの値です。

この関数に渡されるeventは、現在のブラウザの状態やその他の有用な情報を含む単なるオブジェクトです。これは、異なるブラウザで異なる値で満たされたわずかに異なるプロパティを持っていますが、主な機能はどこでも同じです。

window.onload = function(){ 
    var yourElement = document.getElementsByTagName('pword')[0]; 
    yourElement.onkeyup = function(event){ 
    PasswordStrength(this.name, 8, 'relaxed') 
    }; 
}; 
  • それは本当に悪いではありませんありませんが、ちょうどname ..あなたがアクセスするたびに使用する:

    • としては、それはあなたが何をしたか書くかどうかの違いか、これを行うものではありません上記で説明しました所有者オブジェクトのプロパティの場合は、thisというキーワードを省略できます。したがって、それは単に代わりに(オブジェクトを含むすべては自分自身を指しwindowという名前のプロパティを持っているので、すべての理論的に取り組んでいる)window.onloadまたはthis.onload、あるいはthis.window.onload
    <script type="text/javascript">//<![CDATA[ 
    onload = function(){ alert('hello!') }; 
    //]]></script> 
    

    を書くことについてのものと同じ葛藤です。それは大会の問題だと言えるでしょう。しかし、を介してアクセスする必要があるwindowを除いて、常にキーワードを使用して自分のプロパティにアクセスするという条約が強く確立され、サポートされているので、おそらくthis.nameと書くべきです。

    • 最終的にイベントを中断するかどうかによって異なりますが、ユーザーにはkeyupを終了させないでください。上記で説明した。
    • eventオブジェクトを渡すことができないのはなぜですか?通常の変数のように扱うだけです。
    • あなたの質問に上記の情報と例を組み合わせると、どのキーが押されたのかを知ることができます。
+0

もっとイベントを説明していただきありがとうございます。私はこのすべての情報を取り入れているスポンジです...時には、何が何をしているのかをグーグルで調べると、明確な簡潔な情報を見つけることができないことがあります。私は6502のアセンブリ言語や本に私が言った本に慣れています。もしあなたがこの関数を呼び出してこれを返し、それが "this"と "that"のようなCPU状態と関数を残すならば。 Web開発は多くの推測のように思えます。笑。より厳密にする必要があります。あなたのコメントに感謝します。 – PerryCS

+0

誰かがあなたの前日に1日前に答えた - あなたの両方のクレジットを与えることはできませんし、第1の人はほとんどすべてに答えました。私はあなたの時間を感謝します - 私は今、より多くの知識を持っています:) – PerryCS

+0

@PerryCS問題はない、私は助けることができたら嬉しいです!私の唯一のポイント: "1日前"はちょっと誇張されています - それは35分(真夜中)でした;) – Matmarbon

関連する問題