Greasy Fork is available in English.
Choose predefined selections for drop-down form fields upon pressing a hotkey. For e.g. country, state, city. If the state or city fields changes dynamically based on the selected country, the hokey will need to be pressed again.
- // ==UserScript==
- // @name Choose Form Field Selections On Hotkey
- // @namespace ChooseFormFieldSelectionsOnHotkey
- // @version 1.0.1
- // @description Choose predefined selections for drop-down form fields upon pressing a hotkey. For e.g. country, state, city. If the state or city fields changes dynamically based on the selected country, the hokey will need to be pressed again.
- // @author jcunews
- // @match *://*/*
- // @grant none
- // ==/UserScript==
- var
- //hokey configuration
- hotkeyKey = "l", //key name. should be lowercase
- hotkeyShift = false, //need SHIFT key?
- hotkeyCtrl = true, //need CTRL key?
- hotkeyAlt = false, //need ALYT key?
- //Selections to choose if the form fields have them. Case insensitive substring (partial match).
- fieldValues = [
- "United States", //country name
- "Washington", //state name
- "Seattle", //city name
- "General Manager", //occupation
- "English" //language
- //Can be any number and any text. The script will select it if it matches.
- ];
- fieldValues.forEach(
- function(v, i) {
- fieldValues[i] = v.toLowerCase();
- }
- );
- addEventListener("keydown", function(ev) {
- if ((ev.key === hotkeyKey) && (ev.ctrlKey === hotkeyCtrl) && (ev.shiftKey === hotkeyShift) && (ev.altKey === hotkeyAlt)) {
- Array.prototype.slice.call(document.querySelectorAll("SELECT")).forEach(
- function(select) {
- Array.prototype.slice.call(select.options).some(
- function(option, i) {
- option = option.textContent.toLowerCase();
- if (fieldValues.some(
- function(v) {
- return option.indexOf(v) >= 0;
- }
- )) {
- if (select.selectedIndex !== i) {
- select.selectedIndex = i;
- select.dispatchEvent(new Event("change"));
- }
- return true;
- }
- }
- );
- }
- );
- ev.preventDefault();
- ev.stopPropagation();
- ev.stopImmediatePropagation();
- }
- }, true);