2011-11-18 72 views
1

在index.php中错误时获取值从输入[类型= “隐藏”]

<input type="hidden" name="id" value="1" /> 
<input type="hidden" name="type" value="2" /> 
中的script.js

$(document).ready(function(){ 
    $('#button').click(function(){ 
     var id = $(this).prev('input[type="hidden"][name="id"]').val(); 
     var type = $(this).prev('input[type="hidden"][name="type"]').val(); 
     alert(id); 
     alert(type); 

}); 

当我运行index.php文件,结果是不确定的,如何修复它

+4

嗯,一方面,只有一个对象可以直接放在按钮元素的前面,所以最多只能找到其中一个输入,并且只有当按钮直接位于DOM之后时才会出现。 –

回答

4

prev()仅获取迫切前述元件和至少为“id”元素不先于按钮。

我猜按钮和输入共用相同的父,所以你大概可以使用:

var id = $(this).parent().find('input[type="hidden"][name="id"]').val(); 
var type = $(this).parent().find('input[type="hidden"][name="type"]').val(); 

你需要添加周围的HTML和按钮的HTML如果这并未”工作。

编辑:另一种选择可能使用prevAll()而不是prev()

3

你为什么不直接从根目录选择?

>var id = $('input[type="hidden"][name="id"]').val(); 
>var type = $('input[type="hidden"][name="type"]').val(); 
+1

如果页面上有多个相似的表单/输入元素,这可能会很危险。 – RoToRa

+1

你不能有两个具有相同名称值的输入 – alessioalex

+0

@alessioalex:当然你可以,即使是在相同的形式。 – RoToRa

0

在你的情况下,有没有必要使用[type="hidden"]。尝试简化选择器,这样的: $(this).prev('input[name="id"]').val();

1

如果你使用上一个()的元素名称“ID”,没有即时 一个同级。

var id = $(this).prev('input [type =“hidden”] [name =“id”]')。val();

这项事业的错误 '未定义'。