4

这是我的表格:

<form action="/Admin/usuarios/obtener_valores" method="POST">
<div class="span-16">
    <input type="hidden" value="1" name="usuarioPinIdHidden" id="usuarioPinIdHidden">
    <table class="summary" style="border: none;">
        <tr>
            <td colspan="2">¿A que edad tuvo sus primeras vacaciones?</td>
        </tr>
        <tr>
            <td colspan="2"><input id="text@&#39;+1+^+1" name="respuesta[0].respuesta" type="text" value=""/></td>
        </tr>
        <tr>
            <td colspan="2">¿Estaba casado en 1991?</td>
        </tr>
        <tr>
            <td colspan="2"><input id="boolean@&#39;+3+^+1" name="respuesta[1].respuesta" type="radio" value="true"/>
                <label for="boolean@'+3+^+1">Si</label>
                <br />
                <input id="boolean@&#39;+3+^+1" name="respuesta[1].respuesta" type="radio" value="false"/>
                <label for="boolean@'+3+^+1">No</label></td>
        </tr>
    </table>
</div>

这是一个在单击提交按钮后打印所有 id 值的函数:

$(document).ready(function() {
        $('form').submit(function (){
            return verificarRespuestas();
        });
    });

    function verificarRespuestas(){
        alert('hola');
        $('form').children().each(function(){
            var child = $(this);
            alert(child.id);
        });
        return false;
    }

但这就是它的打印内容:

  • 你好
  • 不明确的
  • 不明确的

当我期望获得这些值时:

  • 你好
  • 文字@'+1+^+1
  • 布尔@'+3+^+1

我究竟做错了什么?

提前致谢!

4

4 回答 4

5
  • children只选择元素的直接子元素,您想要$('form').find('input')$('form').find('input[id]')只获取那些具有 ID 的元素,或者$('form').find('input:visible')只获取那些可见的(即不隐藏的)。
  • 到达那里后,您可以简单地this.ideach. 或者,通过 jQuery $(this).attr('id'),.
  • 您的 ID 无效 - 它们不仅包含无效字符,而且您不能像第二次输入那样复制它们。所有的胡言乱语有什么意义?

如果您正在执行某种客户端验证或样式设置,则有许多更智能的方法可以在输入中表示字段类型,最常见的是通过类,也可以通过 HTML5 中的自定义属性或字段类型。ID 绝对不是您想要放置booleanXXX信息的地方。HTML 规范说:

ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_") , 冒号 (":") 和句点 (".")。

于 2012-04-18T17:55:55.913 回答
4

描述

You should use the jQuery attr() function to get the id.

jQuery.attr() Get the value of an attribute for the first element in the set of matched elements.

Sample

alert(child.attr('id');

More Information

于 2012-04-18T17:55:58.420 回答
2

child是一个 jquery 对象,因此它没有属性id

你应该使用这个:

  $('form').children().each(function(){
        var child = this;
        alert(child.id);

或这个:

  $('form').children().each(function(){
        var $child = $(this);
        alert(child.attr('id'));

$您应该为您的 jQuery 变量添加前缀。

阅读本文:
在 jQuery 中使用带有变量的 $ 是否有任何特定原因

于 2012-04-18T17:55:53.667 回答
1

NOTE: YOU have invalid IDS

        $('form input').each(function(){
            alert(this.id);
        });
于 2012-04-18T17:56:22.413 回答