如何使用JQuery检查多个元素的值(由其ID描述)?

时间:2013-05-28 19:37:19

标签: javascript jquery

if (standardFlag == "ASCE")
{
  if (document.querySelectorAll('#Ss_param, #S1_param, #T0_param, #TL_param').value == "" ){
    alert("Please fill out all the required fields before generating your design spectrum");
  }
  else if (document.getElementById('Ss_param').value < document.getElementById('S1_param').value {
    alert("S1 must be less than Ss!");
  }

我正在尝试检查Ss_param,S1_param,T0_param或TL_param输入id是否包含任何值。第二个条件通过它自己的情况,这就是我如何知道整个条件没有错误,但第一个条件没有通过它应该。我该如何纠正这个问题?

4 个答案:

答案 0 :(得分:2)

首先:您应该查看验证库。

如果您仍希望以这种方式处理它,我会研究jQuery的filter方法。

这将仅返回具有值的元素:

var $elementsWithValue = $('#Ss_param, #S1_param, #T0_param, #TL_param').filter(function(){ 
    return this.value.length > 0 
});

然后你可以检查$ elementsWithValue length。

答案 1 :(得分:1)

重新格式化代码后更具可读性,看起来你错过了一个结束括号},这是这个问题中的拼写错误,还是代码中的错误?

此外,您的第二个条件是缺少右括号)。当您在正在测试的浏览器中打开控制台时,您是否注意到了javascript错误?

解决该问题后,您需要注意使用本机浏览器功能。当您使用querySelectorAll时,您将获得一系列对象。在它们上调用.value可能也会导致javascript错误。您需要循环遍历每个值,或使用jQuery(这可以为您提供更易于维护的解决方案)。

使用jQuery,这将为您提供所需的结果:

if (standardFlag == "ASCE")
{
  var error = false;
  $.each(["Ss_param", "S1_param", "T0_param", "TL_param"], function(){
    if ($("#" + this).val() == ""){
      error = true;
      alert("Please fill out all the required fields before generating your design spectrum");
    }
  })

  if(!error && $("Ss_param").val() < $("#S1_param").val())
    alert("S1 must be less than Ss!");
  }
}

答案 2 :(得分:1)

如果您的ID始终以_param

结尾,则可以使用过滤器
if ($('[id$="_param"]').filter(function(){
     return $(this).val() === "";  
   }).length > 0){
alert("Please fill out all the required fields before generating your design spectrum");
}

答案 3 :(得分:1)

您无法从多个元素中获取一个值。只需一次比较一个:

if (document.getElementById('Ss_param').value === ""
    || document.getElementById('S1_param').value === ""
    || document.getElementById('T0_param').value === ""
    || document.getElementById('TL_param').value === "" ){

(并检查您的JavaScript控制台是否存在语法错误。您的else if测试缺少右括号。)