条件被颠倒评估

时间:2016-04-07 09:39:36

标签: javascript jquery

我提交了一段代码来验证表单。这不是我第一次使用此代码,但这是第一次使用boostrap。

这是我第一次注意到条件是从最后一个到第一个进行评估的:所以如果我尝试发布一个空表单,我会在最后一个字段中出错;然后一旦修复了那个错误,它就会移动到前一个错误,然后返回到顶部。

我的JS:

$('#submit').click(function(e){
    e.preventDefault();
    var tipo = <?php echo $tipo; ?>;
    var error = 0;
    if ($('#screen_name').val()=='') {
        $('#message').removeClass().addClass('text-danger').html("<strong><?php echo _("Inserisci il nome della schermata per proseguire."); ?></strong>").fadeTo(900,1);
        $('#screen_name').focus();
        error = error + 1;
    }
    if (tipo==1||tipo==2||tipo==3) {
        if ($('#scroll_text').val()=='') {
            $('#message').removeClass().addClass('text-danger').html("<strong><?php echo _("Inserisci una testo da fare scorrere per proseguire."); ?></strong>").fadeTo(900,1);
            $('#scroll_text').focus();
            error = error + 1;
        }
    }
    if (tipo==2||tipo==4) {
        if ($('#templ_img').val()=='') {
            $('#message').removeClass().addClass('text-danger').html("<strong><?php echo _("Scegli una immagine per proseguire."); ?></strong>").fadeTo(900,1);
            $('#templ_img').focus();
            error = error + 1;
        }
    }
    if (tipo==3||tipo==5) {
        if ($('#templ_film').val()=='') {
            $('#message').removeClass().addClass('text-danger').html("<strong><?php echo _("Scegli un video per proseguire."); ?></strong>").fadeTo(900,1);
            $('#templ_film').focus();
            error = error + 1;
        }
    }
    if (error==0) {
        ajaxSubmit();
    }
});

我错过了什么?这段代码有什么问题?假设tipo=2,它将评估:

  1. #templ_img
  2. #scroll_text
  3. #screen_name
  4. 但应该是:

    1. #screen_name
    2. #scroll_text
    3. #templ_img
    4. 既是表格中的序列,也是js代码中的序列。

1 个答案:

答案 0 :(得分:0)

根据@Yoshi的建议,我通过包装每个if语句检查前一个是否已经错误来解决问题。

if (error==0) {
    if (tipo==1||tipo==2||tipo==3) {
        if ($('#scroll_text').val()=='') {
            $('#message').removeClass().addClass('text-danger').html("<strong><?php echo _("Inserisci una testo da fare scorrere per proseguire."); ?></strong>").fadeTo(900,1);
            $('#scroll_text').focus();
            error = error + 1;
        }
    }
}
例如,

。 我的代码覆盖了下面发现的每个错误。 Else If不适用,因为else是针对内部的,但我首先检查tipo值。