Greasemonkey, чтобы изменить значение Radio кнопок в форме? - PullRequest
2 голосов
/ 30 июня 2011

Я пишу скрипт Greasemonkey / Tampermonkey, и мне нужно включить переключатели в зависимости от имени и значения радиоуправления.

Вот как это выглядит:

<input type="radio" name="11" value="XXX" class="radio">
<input type="radio" name="11" value="zzzz" class="radio">

Итак, я хочу установить те кнопки, которые имеют имя 11 и значение zzzz для проверки.

1 Ответ

2 голосов
/ 01 июля 2011

Это очень легко, когда вы используете jQuery.Вот полный сценарий:

// ==UserScript==
// @name     _Radio button check
// @include  http://YOUR_SITE/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @grant    GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/
$("input[name='11'][value='zzzz']").prop ('checked', true);

Селектор input[name='11'][value='zzzz'] jQuery получает все <input> s, которые имеют initial value zzzz, но только если они находятся в группепереключатели с name="11".

Ссылка:


Важно: Вышеуказанное работает на большинстве страниц, но на страницах, управляемых AJAX , вам часто нужно использовать AJAX-осведомленные методы. Это потому, что скрипт Greasemonkey будет запускаться до загрузки нужного вам флажка.

Один из способов справиться с этим утилита waitForKeyElements .Вот так:

// ==UserScript==
// @name     _Radio button check
// @include  http://YOUR_SITE/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/
waitForKeyElements ("input[name='11'][value='zzzz']", selectRadioButton, true);

function selectRadioButton (jNode) {
    jNode.prop ('checked', true);
}



Старый ответ , который был «современным» :) назад, когда был задан вопрос:

// ==UserScript==
// @name            _Radio button check
// @include         http://YOUR_SITE/YOUR_PATH/*
// @require         http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js
// ==/UserScript==

$("input[name='11'][value='zzzz']").attr ("checked", "checked");
...