将嵌套较深的元素传递给JQuery中的函数

将嵌套较深的元素传递给JQuery中的函数,jquery,Jquery,我有以下表格: <form action="contact.php" method="post" id="contactform"> <ol> <li> <label for="name">First Name * </label> <input id="name" name="name" class="text" />

我有以下表格:

<form action="contact.php" method="post" id="contactform">
          <ol>
            <li>
              <label for="name">First Name * </label>
              <input id="name" name="name" class="text" />
            </li>
            <li>
              <label for="email">Your email * </label>
              <input id="email" name="email" class="text" />
            </li>
            <li>
              <label for="company">Company</label>
              <input id="company" name="company" class="text" />
            </li>
            <li>
              <label for="subject">Subject</label>
              <input id="subject" name="subject" class="text" />
            </li>
            <li>
              <label for="message">Message * </label>
              <textarea id="message" name="message" rows="6" cols="50"></textarea>
            </li>

            <li class="buttons">
              <input type="image" name="imageField" id="imageField" src="images/send.gif" />
            </li>
          </ol>
        </form>
这个脚本(用jquery编写)用于拦截提交事件

jQuery(document).ready(function(){
    $('#contactform').submit(function(){
        ...
    });
});
问题是,在最后一个脚本中,我想调用
validateRequired
传递每个必需的输入/文本区域(即:
name
email
message
)作为第一个参数

我试着这样做:

validateRequired($('#name'));
但它不起作用


我怎样才能做到这一点呢?

我首先要为每个必需的输入添加一个类

  <li>
    <label for="subject">Subject</label>
    <input id="subject" name="subject" class="text required" />
  </li>
虽然这会发出诸如“subject is required”之类的一般警报,但希望您可以使用此迭代器模式实现更好的用户体验,可能是通过使用不同的背景颜色突出显示所需的文本字段

jQuery(document).ready(function(){
  $('#contactform').submit(function(){
    $('#contactform input.required').each(function(){
      this.addClass('error');
      alert('The fields highlighted in red are required');
    });
  });
});

我受到Jeff Vyduna解决方案的启发,但我自己解决了它

$('#contactform').submit(function(){
            var submit = true;

        $('#contactform *.required').each(function(){
                if(!validateRequired(this, this.id + ' is required'))
                {
                    submit = false;
                    return false;
                }
        });

        return submit;
});

显然,输入字段(包括
textarea
)必须是
必需的

,第一种解决方案部分有效。我不得不将
this.attr('name')
更改为
this.id
。此外,它不会验证
消息
,因为它是
文本区域
。还有什么提示吗?嗯,当我发现这个时,我开始自己动手:
jQuery(document).ready(function(){
  $('#contactform').submit(function(){
    $('#contactform input.required').each(function(){
      this.addClass('error');
      alert('The fields highlighted in red are required');
    });
  });
});
$('#contactform').submit(function(){
            var submit = true;

        $('#contactform *.required').each(function(){
                if(!validateRequired(this, this.id + ' is required'))
                {
                    submit = false;
                    return false;
                }
        });

        return submit;
});