2014-06-26 69 views
0

这个问题已经做完了,所以我真的很抱歉!我已经从同一主题的几个SO问题中解决了下面这个问题。jQuery空输入检查功能没有按预期工作

尽管如此,我仍然无法按预期工作。

  • 如果没有被填充它的工作原理确定。
  • 如果最终输入填充,而不是别人它的工作原理确定。
  • 如果MIDDLE输入被填充,它可以正常工作。
  • 如果您只填写第一个输入,它会发出警报,但是仍然提交?

JSFIDDLE

$(document).ready(function (e) { 
    // completed count submit handler 
    $("#submit_counts_button").on('click', function() { 
     window.incomplete = false; 
     $('input[type=number]').each(function() { 
      if ($(this).val().length == 0) { 
       window.incomplete = true; 
       alert('Some fields are empty'); 
       return false; 
      } else { 
       if (window.incomplete === false) { 
        $("#submit_counts_button").prop('disabled', true); 
        $("#submit_counts_button").html('Please Wait ...'); 
        //$("#update_form").submit(); 
       } 
      } 
     }); 

    }); 
}); 

我敢肯定这件事情完全尴尬很明显,但在16小时后的一天,我无法看到它。任何帮助表示赞赏...

+1

里面'每()'它迭代之外所以如果遇到一个没有值的输入,它就会返回到条件中的第一部分,并且'return false'返回'each()',所以迭代停止。如果遇到的第一个元素有一个值,它会继续到条件的其他部分并提交表单,而不管其他输入包含什么内容,所以整个概念是有缺陷的。 – adeneo

+0

@adeneo在充满“应该怎么做”(接受的答案)的情况下,我现在可以绝对看到我的方式的错误。你的解释很有道理。 :) –

回答

1

你需要拉不完备性“检查.each

$(document).ready(function (e) { 
    // completed count submit handler 
    $("#submit_counts_button").on('click', function() { 
     window.incomplete = false; 
     $('input[type=number]').each(function() { 
      if ($(this).val().length == 0) { 
       window.incomplete = true; 
       alert('Some fields are empty'); 
       return false; 
      } 
     }); 

     if (window.incomplete === false) { 
      $("#submit_counts_button").prop('disabled', true); 
      $("#submit_counts_button").html('Please Wait ...'); 
      //$("#update_form").submit(); 
     } 
    }); 
}); 

http://jsfiddle.net/6WpeF/6/

+0

*在绝望中摇头*我说这会令人尴尬明显......我想我应该把键盘放下一天。谢谢Michael_B。 –

+0

不...不太...检查更新。 –

+0

哇。这太多了。而且更合乎逻辑。非常感谢您抽出时间;对此,我真的非常感激。奇迹般有效! –

0

尝试

if(document.getElementById('id of input').value != ""){} 
+1

请详细说明你的答案。这是如何解决OP的问题的? –