如何通过名称获取“this”表单内容?

时间:2011-05-23 10:01:41

标签: javascript jquery

在以下示例中,我使用html titlethis表单获取id=title

我该怎么做,但不是使用ID,而是使用名称?

$(document).ready(function(){

    $('form').live('submit', function(){

    var aform = $('form[name="create_form"]');

    // get the entire form
    var form = $(this);

    // get form title field by ID
    var title = this.elements.title.value;

    // get selected radio button using name instead if ID
    var type = $(this).find('input:radio[name="ctype"]:checked').val() || '';

    alert(title);

对于单选按钮,它是按名称获取的,但我无法弄清楚如何将该语法转换为

的正常表单字段
<input name="title" id="55544_title" type="text" />

4 个答案:

答案 0 :(得分:1)

在这一行

// get form title field by ID
var title = this.elements.title.value

你没有使用id获取它,你使用name属性获取它,所以在某种程度上你已经正确地执行了它

答案 1 :(得分:1)

为什么你不能这样做:

var title = $('input[name=title]',form).val();

而不是:

var title = this.elements.title.value

答案 2 :(得分:0)

$(this).find(":input[name='title']");

应该有效

答案 3 :(得分:0)

>     // get form title field by ID
>     var title = this.elements.title.value;

在监听器中,this是表单(因为监听器附加到表单)。如果有多个名称为'title'的元素,则:

this.elements.title

将是一个集合。您正试图访问该对象的属性。如果要引用已选中的集合中的单选按钮,则:

$(this).find('input:radio[name="ctype"]:checked')

将返回一个jQuery对象,其输入作为唯一元素,因此:

var checkedButton = $(this).find('input:radio[name="ctype"]:checked')[0];

应该做的伎俩(如果选择了一个)。或者,您可以迭代this.elements.title返回的元素以查找所选元素:

var checkedButton, buttons = this.elements.title;

if (buttons.tagName) {
  checkedButton = buttons;

} else {

  for (var i=0, iLen=buttons.length; i<iLen; i++) {

    if (buttons[i].checked) {
      checkedButton = buttons[i];
    }
  }
}