您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allows you to unclick (i.e. clear, deselected, uncheck) a radio button by clicking on the radio button or the radio buttons label. This script is a helpful companion to mmmturkeybacon Embiggen Radio Buttons and Checkboxes.
- // ==UserScript==
- // @name mmmturkeybacon Unclick Radio Button
- // @author mmmturkeybacon
- // @description Allows you to unclick (i.e. clear, deselected, uncheck) a radio button by clicking on the radio button or the radio buttons label. This script is a helpful companion to mmmturkeybacon Embiggen Radio Buttons and Checkboxes.
- // @namespace http://userscripts.org/users/523367
- // @match http://*/*
- // @match https://*/*
- // @exclude https://*.surveymonkey.com/*
- // @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js
- // @version 1.00
- // @grant GM_log
- // ==/UserScript==
- //NOTE: surveymonkey radio buttons already allow themselves to be unclicked (cleared).
- $(window).load(function()
- {
- var is_already_checked = null;
- /* When a label that surrounds a radio button is clicked, it triggers a radio button click,
- * which triggers another label click, so it needs to be debounced. */
- var is_in_bounce_interval = false;
- $(document).on('mousedown', 'input[type="radio"]', function(event)
- {
- is_already_checked = $(this).is(':checked')
- });
- $(document).on('click', 'input[type="radio"]', function(event)
- {
- is_in_bounce_interval = true;
- setTimeout(function(){is_in_bounce_interval = false;}, 0);
- if ($(this).is(':checked') && is_already_checked)
- {
- $(this).attr('checked', null);
- }
- });
- $(document).on('click', 'label', function(event)
- {
- var $this = $(this);
- var id = $this.attr('for');
- if (id)
- {
- var $radio = $('input[id="'+id+'"][type="radio"]');
- }
- else
- {
- var $radio = $this.find('input[type="radio"]');
- }
- is_already_checked = $radio.is(':checked');
- if (is_already_checked && !is_in_bounce_interval)
- {
- event.preventDefault();
- $radio.attr('checked', null);
- }
- });
- });