1

我正在以以下方式捕获使用 twitter bootstrap 创建的表单的数据异步:

 $('form[data-async]').live('submit', function(event) {
        var $form = $(this);
        var $target = $($form.attr('data-target'));
        var target_id = $target[0].id;

  ....
 }

我想在有问题的表单中引用名称为“用户名”的输入...我尝试了 $form.username,$form['username'],但无济于事,我找不到如何获取输入。我知道我可以使用

  $('#formid input[name=bla]') 

但由于我已经有了表单对象,如果可能的话,我想使用它。

谢谢

4

3 回答 3

4

您可以使用.find()

var $input = $form.find('input[name=bla]');

编辑——评论者 Jack 指出表单 DOM 元素还有 HTML5“元素”属性。这使您可以按名称或 ID 或数字索引获取输入。

var input = this.elements['bla'];

由于该机制还考虑元素“id”属性(事实上,我认为这些属性优先),因此按名称访问很复杂。

于 2012-12-29T14:55:49.353 回答
2

在您的提交处理程序中,username可以通过以下方式简单地引用输入字段:

this.elements['username']

不需要花哨的 jQuery :)

更新

没有意识到elements这是一个相当新的添加。在此之前,您可以使用:

this.username

更新 2

垫片版本如下所示:

var field = this.elements ? this.elements['username'] : this.username;
于 2012-12-29T15:00:11.247 回答
1

您可以使用表单对象作为上下文和选择器来查找上下文中的元素。

句法:jQuery( selector [ , context ] )

$('input[name=bla]', $form );

您可以使用它,因为它代表您的表单。

$('form[data-async]').live('submit', function(event) {

     $('input[name=bla]', this ); // this is your form

 })
于 2012-12-29T14:57:19.733 回答