だから私はこれを持っていました、そしてそれは働いていて、そしてすべてが良かったです。次に、これに変更を加えようとしましたが、すべてうまくいきませんでした。関数を間違った方法で定義していますか?申し訳ありませんが、私はJSとjQを初めて使用します(ただし、これはjQuery関連のものではなく、単なる基本的なJavaScriptであると想定しています)
編集:また、MAILTO:hrefは機能しませんか?試してみましたが、メールが届きませんでした…とにかく、ありがとう!
これらを変更する必要があります。
$("#name").focusout(checkName());
に
$("#name").focusout(checkName);
関数自体をハンドラーとして割り当てたいのfocusout
ですが、代わりに、関数がハンドラーとして返すものをすべて割り当てています。
また、mailto:
URLスキームは電子メールを送信しません。訪問者のマシンでこのスキームのハンドラーとして定義されているローカルメールクライアントを開き、URLのアドレスにアドレス指定された新しいメッセージの作成を開始します。
実行された関数の結果ではなく、関数名を渡します。
$("#name").focusout(checkName);
$("#pass").focusout(checkPass);
$("#pass2").focusout(checkPass2);
関数名の前に追加var
します(完全に必要というわけではありませんが、グローバルになるのを防ぎます)。
var checkName = function(){
そして、実際の関数自体を渡すのではなく、関数を実行して結果を渡すため、()なしでイベントバインディング関数にそれらを渡します。
$("#name").focusout(checkName);
これで問題が解決するはずです。
http://jsfiddle.net/infernalbadger/Hxnv5/6/
また、mailto:リンクは正常に機能します。デフォルトの電子メールクライアントが開きます。