#jquery
#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";
}
Я хочу, чтобы они считывались только из div с именем «logincap». Таким образом, в dom может быть несколько recaptcha_challenge_field
и recaptcha_response_field
.
Я знаю, как выполнять проверку и прочее в php. если php читает что-либо другое, то nope, он попытается проверить captcha с помощью Google, иначе проверьте, является ли учетная запись «доверенной». Итак, я просто выделил эту часть, чтобы вы могли на нее взглянуть. Знаете ли вы, что мне пришлось бы изменить, чтобы они считывались из «logincap» recaptcha_response_field
и recaptcha_challenge_field
?
Ответ №1:
Я делаю предположение, что у вас есть #logincap div, обтекающий поля #recaptcha_{challenge,response}_fields , поэтому не было бы самым простым решением настроить таргетинг на правильные поля, используя как #logincap, так и поля recaptcha, например:
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";
}
Или я упускаю что-то очевидное?
На совершенно другом примечании: я не думаю, что было бы допустимо в html обслуживать более одного элемента с одинаковым идентификатором (т. Е. несколько элементов, идентифицированных как recaptcha_{challenge,response}_field)
В любом случае, надеюсь, это поможет 🙂
Ответ №2:
На самом деле этот вопрос сформулирован не особенно удачно, но я собираюсь попытаться понять, что, как я думаю, вы имеете в виду.
Вы можете сузить поле выбора jQuery, используя контекст. Context — это раздел вашего DOM, который вы можете использовать в качестве необязательного аргумента при любых дальнейших выборках jQuery.
Например:
var context = $('#myElement')[0];
Теперь я могу запрашивать другие элементы DOM в узле «myElement» следующим образом:
$('table', context).show();
Это гарантировало бы, что jQuery будет искать элементы таблицы только внутри узлов, содержащихся в моей контекстной переменной (в данном случае «myElement»).
Итак, чтобы ответить на ваш вопрос (надеюсь), вы бы задали контекст, подобный этому:
var context = $('#logincap')[0];
Затем вы могли бы запросить свои поля следующим образом:
$('input#recaptcha_challenge_field', context').val();
Теперь: обязательное предупреждение. В любом случае вам не следует использовать несколько идентификаторов в вашем DOM. Каждый атрибут ID для ваших элементов должен быть уникальным. Рассмотрите возможность использования атрибута name, если вы хотите ссылаться на одно и то же значение в нескольких элементах, или рассмотрите возможность использования вместо него суффиксов типа #recaptcha_challenge_field-1
.