Используя JavaScript для управления вводом HTML (флажок) элементы через тип вместо имени

Ваше описание происходящего выглядит неверным.

Это не (или, по крайней мере, не должно), что это происходит. Когда браузер запрашивает http://server.com/login и возвращает в ответ заголовок Set-Cookie, cookie устанавливается и ограничивается доменом server.com, даже если ответ редирект. Если вы видите файл cookie «auth», отправленный на client.com, то это файл cookie, который client.com был установлен ранее.

В любом случае, похоже, что вас действительно волнует, это

Существует множество причин, по которым это может происходить.

  • CORS . Вы упомянули, что это было включено CORS, но ради других, читающих это, у вас должны быть установлены следующие заголовки CORS на server.com
    • Access-Control-Allow-Origin: http://client.com
    • Access-Control-Allow-Credentials: true
    • [ 1146]
  • Обратите внимание, что вы не можете избежать использования подстановочного знака для Access-Control-Allow-Origin при отправке учетных данных. Также обратите внимание, что источник должен быть точным совпадением, включая схему (http или https). На практике обычно серверы читают заголовок Origin запроса, сверяют его с белым списком и, если это разрешено, копируют значение заголовка Origin из запроса в заголовок Access-Control-Allow-Origin в ответе. [тысяча сто тридцать одна]
  • Вы должны установить xhr.withCredentials = true в своем запросе XHR. (См. MDN для более подробной информации.)

Затем, после того, как вы все это сделали, у вас на пути будет еще одно препятствие. Поскольку вы используете client.com и пытаетесь отправить файл cookie на server.com, файл cookie server.com считается «сторонним». AFAIK У всех основных браузеров есть настройка, которая блокирует сторонние куки для конфиденциальности, потому что они чаще всего используются трекерами для сбора маркетинговых данных для рекламы. Я считаю, что большинство из них по умолчанию блокируют сторонние куки, но я не уверен в этом. Наверняка многие люди установили в своих браузерах блокировку сторонних файлов cookie.

Таким образом, вы должны сообщить своим посетителям, чтобы они настраивали свой браузер для разрешения сторонних файлов cookie из server.com.

Кстати, небезопасно устанавливать cookie при перенаправлении в другой домен. Хотя это разрешено по спецификации AFAIK, возникли проблемы с поддержкой браузера. См., Например, эту ошибку Chrome .

11
задан Julien Chastang 20 January 2009 в 23:38
поделиться

6 ответов

Это должно сделать это:

<script>
function checkUncheck(form, setTo) {
    var c = document.getElementById(form).getElementsByTagName('input');
    for (var i = 0; i < c.length; i++) {
        if (c[i].type == 'checkbox') {
            c[i].checked = setTo;
        }
    }
}
</script>

<form id='myForm'>
<input type='checkbox' name='test' value='1'><br>
<input type='checkbox' name='test' value='1'><br>
<input type='checkbox' name='test' value='1'><br>
<input type='checkbox' name='test' value='1'><br>
<input type='checkbox' name='test' value='1'><br>
<input type='button' onclick="checkUncheck('myForm', true);" value='Check'>
<input type='button' onclick="checkUncheck('myForm', false);" value='Uncheck'>
</form>
24
ответ дан 3 December 2019 в 04:34
поделиться
function findCheckBoxes(el, check) {
        for(var i=0;el.childNodes[i];i++)
        {
            var child = el.childNodes[i];
            if (child.type=="checkbox")
            {
                child.checked = check;
            }
            if (child.childNodes.length > 0)
                this.findCheckBoxes(child, check);
        }
    }
1
ответ дан 3 December 2019 в 04:34
поделиться

Каждый входной элемент имеет атрибут, введите, который для флажков является "флажком", таким образом, Вы могли попробовать что-то вроде этого:

for (var i = 0; i < document.myForm.elements.length; i++) {
    if (document.myForm.elements[i].type == "checkbox") {
        document.myForm.elements[i].checked = true;
    }
}
1
ответ дан 3 December 2019 в 04:34
поделиться

выполните итерации через form.elements набор и проверьте .type == "флажок".

var button = getSelectAllButtonInFormSomeHow();
/*all formelements have a reference to the form. And the form has an elements-collection.*/
var elements = button.form.elements;

for(var i = 0; i < elements.length;i++) {
    var input = elements[i];
    if (input.tagName == "input" && input.type == "checkbox") input.checked = true;
}
1
ответ дан 3 December 2019 в 04:34
поделиться

Если jQuery является опцией, можно сделать это скорее легко.

См. документацию относительно селекторов jQuery. (Последний пример в разделе показывает, как сделать это с переключателями, но просто заменить это флажками.)

0
ответ дан 3 December 2019 в 04:34
поделиться

Действительно ли присвоение является классом ко всем необходимым элементам флажка опция? Если да, то это - то, как я сделал бы это (принимающий "class_name" название класса CSS, существующего во всех рассматриваемых элементах флажка):

function selectCheckBoxes(bChecked) {
   var aCheckBoxes = YAHOO.util.Dom.getElementsByClassName('class_name', 'input');
   for (var i = 0; i < aCheckBoxes.length; i++) {
      aCheckBoxes[i].checked = bChecked;
   }
}

Если Вы захотите избегать классов, но сможете получить родительский элемент идентификатором (или любой другой метод, то я буду использовать идентификатор в примере, хотя), чем Вы может сделать это:

function selectCheckBoxes(bChecked) {
   var oParent = document.getElementById('parentsID');
   var aElements = oParent.getElementsByTagName('input');
   for (var i = 0; i < aElements.length; i++) {
      if (aElements[i].type == 'checkbox') {
         aElements[i].checked = bChecked;
      }
   }
}

Я придерживался бы метода "класса", как бы то ни было.

0
ответ дан 3 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: