jQuery: установка проверенного флажка

Предположим, что у меня есть следующий HTML:

<form id="myform">
  <input type='checkbox' name='foo[]'/> Check 1<br/>
  <input type='checkbox' name='foo[]' checked='true'/> Check 2<br/>
  <input type='checkbox' name='foo[]'/> Check 3<br/>
</form>

Теперь, как я выбираю проверенные поля ввода с именем 'нечто []'?

Это - моя попытка, но она не работает:

$("#myform input[name='foo']:checked:enabled");
35
задан bart 6 September 2019 в 21:13
поделиться

4 ответа

Вместо использования MACTripleDES с повторяющейся клавишей DES для подделки одного DES CBC-MAC, вы можете просто реализовать CBC- MAC самостоятельно поверх DESCryptoServiceProvider .

<1111111111111111> не является слабым ключом DES.

Это вычислит DES CBC-MAC:

public static byte[] CalcDesMac(byte[] key, byte[] data){
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
        des.Key = key;
        des.IV = new byte[8];
        des.Padding = PaddingMode.Zeros;
        MemoryStream ms = new MemoryStream();
        using(CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write)){
          cs.Write(data, 0, data.Length);
        }
        byte[] encryption = ms.ToArray();
        byte[] mac = new byte[8];
        Array.Copy(encryption, encryption.Length-8, mac, 0, 8);
        PrintByteArray(encryption);
        return mac;
    }
---------121--------2850388--- -

Название поля не foo , это foo [] . Вы можете использовать селектор attributeStartsWith :

$("input[name^='foo']:checked:enabled",'#myform');

В идеале вы могли бы сделать это:

$("input[name='foo[]']:checked:enabled",'#myform');

Но, как объясняет этот ответ , jQuery использует это для анализа ] value часть условия attr = value :

(['"]*)(.*?)\3|)\s*\]

\ 3 - группа, содержащая открывающие кавычки, которые, как ни странно, могут быть множественными открывающими кавычками или вообще не открывать кавычки. . *? затем может анализировать любой символ, включая кавычки, пока он не достигнет первого символа ']', заканчивая совпадение. Не предусмотрено положения для экранирования обратной косой черты специальных символов CSS, поэтому вы не можете сопоставить произвольное строковое значение в jQuery.

Другими словами, как только jQuery достигает первого ] , он считает значение окончено. Таким образом, вы застряли с StartSith или с использованием чистых элементов DOM, что также объясняет этот ответ.

ВАЖНОЕ РЕДАКТИРОВАНИЕ SUPER DUPER :
Эта ошибка исправлена, по-видимому. Вы должны быть в состоянии использовать код, который я описал как «идеальный», выше.

53
ответ дан Community 27 November 2019 в 07:09
поделиться

Вы должны указать этот атрибут при выборе и включить []:

$("#myform input[name='foo[]']:checked:enabled");
5
ответ дан Seb 27 November 2019 в 07:09
поделиться

На самом деле, то, что у вас работает, отлично работает, просто используйте двойные кавычки и включите скобки, чтобы они могли матч.

 $("#myform input[name='foo[]']:checked:enabled");

Вы можете увидеть это в действии здесь: http://jsbin.com/oyoro

Обратите внимание, что в прошлом в jQuery были проблемы с скобками, что может объяснить большую путаницу вокруг необходимости побега. Я знаю, что у меня были проблемы с квадратными скобками и просто цитирование.

См .: http://dev.jquery.com/ticket/3443

1
ответ дан Brad Larson 27 November 2019 в 07:09
поделиться

Я считаю, что это происходит примерно так:

$("input #foo[] :checked");

РЕДАКТИРОВАТЬ: Комментатор прав. Я должен был пойти с моим первым ответом. :) На этот раз я собираюсь использовать «^».

$("input[name^=foo] :checked");
0
ответ дан Tacoman667 27 November 2019 в 07:09
поделиться
Другие вопросы по тегам:

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