我有
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_field
和recaptcha_response_field
可以在dom中。
我知道在php中进行验证和填充。如果php读取除了nope之外的任何内容,它将尝试使用Google验证验证码,否则检查该帐户是否“受信任”。所以我只是把这部分分开给你看。你知道我需要改变什么才能从“logincap”recaptcha_response_field
和recaptcha_challenge_field
读取它吗?
答案 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
之类的后缀。