0
<script type="text/javascript">
$(document).ready(function(){
$('#addprojectform').live('submit', function (e) {
    e.preventDefault();
     $(".error").remove();   

    var startdate = $("#startdate").val();
    var client = $('#client').val();
    var source_lang= $('#source_lang option:selected').length;
    var targ_lang = $('#targ_lang option:selected').length;
    var qty = $('#qty').val();

    var hasError = false;

   if(startdate == '') {
  $("#startdate").after('<span class="error" style="color: red;">This field is     required.</span>');
  hasError = true;
}

if(client == '') {
  $("#client").after('<span class="error" style="color: red;">This field is required.  </span>');
  hasError = true;
}

if(!(source_lang)) {
  $("#source_lang").after('<span class="error" style="color: red;">This field is required.</span>');
  hasError = true;
}

if(!(targ_lang)) {
  $("#targ_lang").after('<span class="error" style="color: red;">This field is required.</span>');
  hasError = true;
}
if(qty == '') {
  $("#qty").after('<span class="error"  style="color: red;">This field is required.</span>');
  hasError = true;
}
} // if translation


if(hasError == false)
 return true;
    });

 });
 </script>

私はこのコードを持っていました。送信前にフォームを検証したい。フォームにエラーがない場合は制御できません。エラーがなければフォームを送信したい。このコードを追加しました:

if(hasError == false)
 return true;

しかし、フォームを送信しません..誰か助けてください。

4

2 に答える 2

1

削除する

e.preventDefault();

変更する

if(hasError == false)
   return true;
});

の中へ

return !hasError;

補足として、新しいjQueryバージョンlive()を優先して廃止されましたon()

于 2012-08-29T10:42:02.433 に答える
1

素晴らしいことではないかもしれませんが、私がしていることは次のとおりです。

$('#form').submit(function(e) 
{
    if(!$(this).hasClass('valid'))
    {
        e.preventDefault();
        var isValid = false;
        // do validation to set isValid true or false;
        if(isValid)
        {
            $(this).addClass('valid');
            $(this).submit();
            // or possibly $(this).addClass('valid').submit();
            return;
        }
    }
});

これがどのように機能するかというと、最初に送信するときに、フォームに というクラスがあるかどうかがチェックされますvalid。そうでない場合は、フォームの検証を停止し、検証を行います。

有効な場合は、フォームにクラスを追加して再送信します。フォームにvalidクラスがあるため、検証をバイパスして通常どおり送信します。

于 2012-08-29T10:42:41.137 に答える