私は大きなフォームを持つWebアプリケーションをビルドしています。フォームの上部には、ユーザーが1つをクリックしてダイアログボックスを開くFIVEボタンがあります。ボタンは性別、体重、身長、髪色、目の色です。Javascriptでより効率的にチェックと画面スクロールを実行できますか?
ボタンは、このように、カテゴリの名前と疑問符を示すアウト開始:
Sex - ?
Weight - ?
Height - ?
Hair - ?
Eyes - ?
ので、例えば、誰かが重ボタン、それらを可能にJSダイアログポップアップをクリックした場合体重を選ぶ彼らがいったん行ってダイアログを閉じると、疑問符は彼らが選んだ実際の重さを示すように変わり、次に彼らは別のボタンをクリックすることができます。
フォームの残りの部分には「標準」フィールド(標準入力フィールド)があり、Jqueryで検証を行って検証しています。これはうまくいきますが、Jqueryのバリデーションは、上で説明したボタンの設定でうまくいきませんので、以下のコードを使用して自分で検証します。
本質的には、いずれかに疑問符があるかどうかを確認し、そうであれば(ユーザーがまだ選択していないことを意味します)、「必須」メッセージを含むスパンを「表示」しますそれ以外の場合は、最初の無効なJquery Validateフォーム(常にページの下側)にスクロールするだけなので、ページの上部にスクロールします。
以下のコードは非常に非効率的です。同意しますか?もしSexがまだ疑問符を持っているならば、コードは画面に一番上にスクロールするように指示しているが、さらに4つのチェックを続ける必要があるというのは間違っているようだ。
if ($sexdisplaytext.indexOf('?') !== -1) {
$('#sex-display-error').show();
$('html,body').animate({scrollTop:0},0);
}
if ($weightdisplaytext.indexOf('?') !== -1) {
$('#weight-display-error').show();
$('html,body').animate({scrollTop:0},0);
}
if ($heighthdisplaytext.indexOf('?') !== -1) {
$('#height-display-error').show();
$('html,body').animate({scrollTop:0},0);
}
if ($hairdisplaytext.indexOf('?') !== -1) {
$('#hair-display-error').show();
$('html,body').animate({scrollTop:0},0);
}
if ($eyedisplaytext.indexOf('?') !== -1) {
$('#eye-display-error').show();
$('html,body').animate({scrollTop:0},0);
}
私は誰かがこのコードをより効率的に書く良い方法を説明してくれることを願っています。
また、このコードの記述方法は上手くいくのか、パフォーマンス/スピード/その他の問題を引き起こすほど効率的ではないのでしょうか?
洞察力があれば幸いです。単にあなたのelems以上のループが、その後、ホードがエラーを発見した場合は先頭にスクロールし
1)あなたがチェックアウトする場合があります[コードレビュー](https://codereview.stackexchange.com /)2)短絡を常に利用することができます。 'var scrollPage = checkSex || checkWeight || ... '。いずれかが 'true'を返すと、以下のものは実行されません。 –