現在、jQueryを使用して、テキストエリアまたはユーザーがアップロードしたファイルを検証しようとしています。誰かが次のページに移動することを許可してはならないのは、textareaとアップロードされたファイルisValidの両方がfalseの場合だけです。ファイルとテキストエリアのjQuery検証
これは、私がこのようにそれを持っている場合、私は
$(document).ready(function() {
$('#nomination-submit').click(function (e) {
var fileValid = false;
var textValid = true;
$('textarea').each(function() {
if ($.trim($(this).val()) == '') {
textValid = false;
//binds to onchange event of your input field
$('file').bind('change', function() {
var ext = $('#file').val().split('.').pop().toLowerCase();
if ($.inArray(ext, ['pdf', 'doc', 'docx', 'rtf', 'txt']) == -1)
{ $('#fileExtension').slideDown("slow"); $('#fileSize').slideUp("slow"); fileValid = true; } else {
var filesize = (this.files[0].size);
if (filesize > 4194304)
{ $('#fileSize').slideDown("slow"); fileValid = false; } else { fileValid = true; $('#fileSize').slideUp("slow"); }
$('#fileExtension').slideUp("slow"); $('#textOrFile').slideUp("slow");
}
})
}
})
if (fileValid == false && textValid == false) {
e.preventDefault();
{ $('#textOrFile').slideDown("slow"); }
}
}) });
それは、ユーザが入力が無効な場合でも、次のページに移動することができますしているコードです。なんらかの理由で、これを行うとき、または入れ子になったif関数は、両方がfalseでないことを確認しません。これは、ユーザーに次のページに行く唯一の時間です。
だけ観察しかし、彼らがしようとするまで、あなたの変更イベントを結合しません提出する。それはおそらくより良い提出イベントから分離されますか? –
@MarkSchultheissもともと、これらは2つの別々の検証コードでした。私はコードの2つの部分をマージする必要があった、これは私の頭の中で意味を成していた方法だった。それ以外の場合は、提出ボタンの前にそれを置くだろうが、それはそれを配置するための適切な場所のようには思わなかった – race155