只有在某个div中才能读取jquery中的数据

时间:2011-04-13 00:22:49

标签: jquery

我有

if ($('#logincap').length) // see if login cap exists or not
{
    challengeField = $("input#recaptcha_challenge_field").val();
    responseField = $("input#recaptcha_response_field").val();
}
else
{
    challengeField = "nope";
    responseField = "nope";
}

我想让它只从名为“logincap”的div中读取。因此,多个recaptcha_challenge_fieldrecaptcha_response_field可以在dom中。

我知道在php中进行验证和填充。如果php读取除了nope之外的任何内容,它将尝试使用Google验证验证码,否则检查该帐户是否“受信任”。所以我只是把这部分分开给你看。你知道我需要改变什么才能从“logincap”recaptcha_response_fieldrecaptcha_challenge_field读取它吗?

2 个答案:

答案 0 :(得分:1)

我假设您有#logincap div围绕#recaptcha_ {challenge,response} _fields,所以最简单的解决方案就是使用#logincap和recaptcha-fields来定位正确的字段。这样:

if ($('#logincap').length) // see if login cap exists or not
{
    challengeField = $("#logincap > input#recaptcha_challenge_field").val();
    responseField = $("#logincap > input#recaptcha_response_field").val();
}
else
{
    challengeField = "nope";
    responseField = "nope";
}

或者我错过了一些明显的东西?

完全不同的说明:我不认为提供多个具有相同ID的元素(即多个元素标识为recaptcha_ {challenge,response} _field)是有效的html

无论如何,希望它有所帮助:)

答案 1 :(得分:0)

这个问题的措辞并不是特别好,但我会采取我认为你的意思。

您可以使用上下文缩小jQuery选择的范围。 Context是DOM的一部分,您可以在任何进一步的jQuery选择中将其用作可选参数。

例如:

var context = $('#myElement')[0];

我现在可以查询“myElement”节点中的其他DOM元素,如下所示:

$('table', context).show();

这将确保jQuery仅在我的上下文变量中包含的节点内查找表元素(在本例中为“myElement”)。

所以为了回答你的问题(希望如此),你可以设置一个这样的上下文:

var context = $('#logincap')[0];

然后您可以像这样查询您的字段:

$('input#recaptcha_challenge_field', context').val();

现在:强制性警告。您不应该在DOM上使用多个ID。元素的每个ID属性都应该是唯一的。如果要在多个元素中引用相同的值,请考虑使用name属性,或者考虑使用#recaptcha_challenge_field-1之类的后缀。