2016-06-16 11 views
0

jQuery検証(つまり、https://jqueryvalidation.org/)エラーメッセージをカスタマイズしてリンクを含めると、jQueryでのリンク最初のクリックで検証エラーメッセージが機能しない

$("form").validate({ 
    messages: { 
    foo: { 
     required: 'This field is required, <a href="#" onclick="alert(0); return false;">click here to find out why</a>', 
    } 
    } 
}); 

リンクは最初のクリックでは機能しません.2回目以降はリンクが機能しません。ここ

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

何が起こっていますか?

+0

「フォーカス」問題のようです。あなたのフィドルで、 'submit'ボタンをクリックしてください。入力ボックスにまだフォーカスがあります(カーソルが点滅しています)。入力ボックス(空白スペースのみ)に* next *をクリックし、リンクをクリックします。それは1回目に動作します。しかし、入力ボックスにフォーカスを戻してリンクをもう一度試しても、それは起動しません。解決策ではありませんが、それは将来の方向性です。 – Marcus

答えて

1

上記のコメントには、フォーカス問題があるようです。

あなたがfocusInvalidオプションを含めると、ドキュメントごとに、あなたの問題を引き起こしている「無効に無効な要素の集束」falseに設定することができます。

focusInvalid: false 

全コード:

$("form").validate({ 
    focusInvalid: false, 
    messages: { 
    foo: { 
     required: 'This field is required, <a href="#" onclick="alert(0); return false;">click here to find out why</a>', 
    } 
    } 
}); 

Fiddle

要素の焦点は、あなたとあなたのアプリケーション(?UX)にとって重要である場合は、これはあなたを助けにはなりません。

+0

マーカスありがとう。残念ながら、入力中にエラーメッセージが動的に表示されている場合、これは機能しません。 http://jsfiddle.net/xrufp5mx/2/。私はそれが焦点に関係なく最初のクリックを動作させる通常のリンクとは異なるエラーリンクについて何かを理解していません。 – stovroz

+0

'

0

シングルクリックでアラートの期待される結果を達成し、オプションのonclick機能で

 $("form").validate({ 
     focusInvalid: false, 
     messages: { 
      foo: { 
      required: 'This field is required, <a href="#" onclick="alert(0);$(\'#foo\').focus(); return false;">click here to find out why</a>', 
      } 
     } 
     }); 

以下そのアラート使用後に専念するために、私はその入力フィールドとfocusInvalidにバックフォーカス設定:falseが単一に警告が表示されますこれはあなたのために働く参照

ホープhttp://jsfiddle.net/Nagasai_Aytha/6oer7bkg/2/ - すべてのシナリオ

JSFiddleをカバーするであろう、クリックしてください。

+0

あなたは自由にjQueryを持っているときにインラインクリックハンドラを使う必要はありません。 http://jsfiddle.net/Lhmhyjtu/ – Sparky

関連する問題