获取隐藏表格的名称

时间:2013-07-20 20:46:26

标签: javascript forms hidden

我想要做的是获取隐藏表单的名称,在本例中命名为:6ca3787zz7n149b2d286qs777dd8357b,问题是,表单名称总是更改,唯一相同的是它的值,即1,很好99%的时间,唯一100%相同,我猜可能以某种方式用于检索表单名称是:L2ZvcnVtcy8就在它上面。我也试图通过在浏览器(chrome)上手动运行javascript来做到这一点,所以记住javascript代码通过url栏运行,如javascript:codegoeshere,我如何获得表单名称, - &gt ;(6ca3787zz7n149b2d286qs777dd8357b)

<form action="index.php?feature=xxxxxx" method="post" name="login">
                        <input type="submit" name="submit" class="button" value="Logout" />
                        <input type="hidden" name="option" value="username" />
                                                <input type="hidden" name="task" value="logout" />
                        <input type="hidden" name="return" value="L2ZvcnVtcy8=" />
                        <input type="hidden" name="6ca3787zz7n149b2d286qs777dd8357b" value="1" />                   </form>
                    </li>

2 个答案:

答案 0 :(得分:0)

检查this fiddle下面的所有解决方案。

一些可能性:

  • 假设只有一个元素包含name login且该元素为<form>,您可以使用:

    document.getElementsByName('login')[0].getElementsByTagName('input')[4].name
    
  • 如果return <input>具有固定的name属性,那么这应该有效(额外的.nextSibling是因为它们之间有文本节点) :

    document.getElementsByName('return')[0].nextSibling.nextSibling.name
    
  • 如果其中<input>中的任何一个具有固定名称,您可以使用(在示例中,我将<input>name=task一起使用):

    document.getElementsByName('task')[0].parentNode.getElementsByTagName('input')[4].name);
    
  • 如果您真正的所有内容都是固定值,那么您必须在所有for s中使用<input>循环:

    var lastResortName = (function () { for(var i=0, ipts = document.getElementsByTagName('input'), n = ipts.length; i < n; i++) { if (ipts[i].value === "L2ZvcnVtcy8=") return ipts[i+1].name; } })();
    

注意:如果上述name属性存在重复值,请使用索引([0][1][2]等进行测试,直到找到预期要素。

答案 1 :(得分:-1)

如果你使用JQuery,这真的很容易:

$('input[type="hidden"]:eq(3)').attr('name')

此处您的代码正在运行: http://jsfiddle.net/7CHYa/