0

以前はjquery検証プラグインを使用していましたが、wysiwygプラグインにはこのプラグインがないため、フォームを検証するための簡単なスクリプトを作成しました

私はこのようにそれをやろうとしました

function validateArticle(formData, jqForm, options) { 
  $('#errors').empty();
  if ($('#editor').val() == 0) { 
    $('#errors').show();
    $('#errors').append('<li>please enter your article body</li>');
    return false; 
  } 
  if ($('#ArticleTitle').val() == 0) { 
    $('#errors').show();
    $('#errors').append('<li>please enter your article title</li>');
    return false; 
  }
  $('#errors').hide();
  return true ;
}

フォームを検証するときに1つの問題が見つかりました。フィールドごとに検証しているため、エラーメッセージが一度に表示されません。

私は次のようなことをしようとしました

var errors = [];
function validateArticle(formData, jqForm, options) { 
  $('#errors').empty();
  if ($('#editor').val() == 0) { 
    errors.push('<li>please enter your article body</li>');
    var invalid = 1 ;
    return false; 
  } 
  if ($('#ArticleTitle').val() == 0) { 
    errors.push('<li>please enter your article title</li>');
    var invalid = 1 ;
    return false; 
  }
  if(invalid == 1){
    $.each(errors , function(i, val) { 
      $('#errors').append(errors [i]); 
    });
  }

  $('#errors').hide();
  return true ;
}

エラーを配列要素としてプッシュし、無効な場合はそれらをループしようとしましたが、これはまったく機能しませんか?

それを機能させる方法はありますか?

4

1 に答える 1

2
if ($('#editor').val() == 0)   // This is checking if value is 0

これは意味がありません..試してみてください

if ($('#editor').val() == '') //Instead check for empty string

EDIT また、最後にエラーの div を隠しているようです。

 $('#errors').hide();

代わりにこのコードを試してください

$('#validate').on('click', function() {
    var errors = [];
    var html = '<ul>' ;
    valid = true;
    $('#errors').empty();
    if ($('#editor').val() == '') {
        errors.push('<li>please enter your article body</li>');
        valid = false;
    }
    if ($('#ArticleTitle').val() == '') {
        errors.push('<li>please enter your article title</li>');
         valid = false;
    }
    if (!valid) {
        html += errors.join('') + '</ul>' 
            $('#errors').append(html);

    }
    else{
        $('#errors').hide();
    }
    return valid;
});​

デモ

于 2012-10-02T23:00:37.243 に答える