2013-05-01 103 views
0

我有一个函数,循环通过我的表单的所有输入,并检查它们是否填充。如果该字段为空,则会使该特定输入变成粉红色并返回false。错误消息不显示和隐藏取决于如果else语句

我试图在没有填充的输入下面添加一个“Field Required”消息。所以我编写了一个额外的表格后,每一个行,与保存错误信息的股利。在加载页面时,div的css设置为“display:none”。

现在我的功能正在为每个输入显示“必需”,而不仅仅是空白的,但粉色仍然正常工作。

我如何获得“必需”的div来正确显示和隐藏粉红色的颜色?

checkinputs = function (blockOne,blockTwo) { 
inputGood = true; 
blOne = $(blockOne); 
blTwo = $(blockTwo); 
blInput = [blOne,blTwo]; 
for (x = 0; x < 2; x++) { 
     var validators = blInput[x].find(" [id$='RequiredIndicator']").parent().parent('tr').find(':input:not(:hidden)'); 
     var notAllFilled = validators.filter(function(){ 
     var myInput = $(this); //.parent().parent('tr').find(':input'); 
     var filledVal = myInput.val(); 
     var isFilled = $.trim(filledVal).length; 
      if (isFilled) { 
       $(this).css('background-color', 'white'); 

       $(this).closest('div').find('.required').hide(); 

       $(this).parent('td').prev('td').find('span').text('*'); 
       } 
      else { 
      $(this).css('background-color', 'pink'); 

      $(this).closest('div').find('.required').show(); 

      $(this).parent('td').prev('td').find('span').text('*');    
      inputGood = false; 
      } 
     return isFilled; 
     }).length; 
    var inputCount = validators.length; 
}; 
    if(!inputGood){ 
     $('#errorAlert').append('<span style="font-weight:bold;">"Some required information is missing. Please complete the missing fields below."</span>' + '<br><br>'); 
     $('#errorAlertTwo').append('<span style="font-weight:bold;">"Some required credit card information is missing. Please complete the missing fields below."</span>' + '<br><br>');  
    } 
    return inputGood; 
}; 

这里是问题的小提琴: http://jsfiddle.net/RNMM7/

+2

请显示您的html标记,也显示完整的js代码,$(this)指的是什么? – Huangism 2013-05-01 15:19:45

+1

如果你可以做一个小提琴,它会更好! – 2013-05-01 15:20:08

+0

没有HTML,这个JavaScript代码是没有意义的。也张贴您的HTML – Ejaz 2013-05-01 15:23:03

回答

0

你的问题是几乎可以肯定你的线,显示DIV:

$(this).closest('div').find('.required').show(); 

什么这行代码:

  1. 从$(this)开始,它找到最接近的祖先[包括$(this)],这是一个di v,上去DOM树
  2. 查找该div下所有具有'required'类的元素,并显示它们。

没有看到你的HTML是如何构建的,我的猜测是DOM树中最近的div元素包含了你所有的.required元素。您需要用DOM树中较低的元素替换该语句中的'div',该元素只包含$(this)和您想要显示的一个.required元素。

+0

这使得分配有意义,我认为这可能是问题。我添加了一小段代码,以便您可以看到html的结构 – user1836025 2013-05-01 15:54:09

+0

看起来不像小提琴工作正确 - 最简单的方法可能是将.field_holder之类添加到具有标签的td元素, ('。required')。show();' – JSP64 2013-05-01 16:02:23

+0

不幸的是,所需的div与输入不在同一个td中。每个需要的标签在下一行,三个td结束。我将如何瞄准? – user1836025 2013-05-01 16:12:24