你不能只是“杀死”输入。如果这样做,那么在您提交表单时,必要的数据可能不会发送到服务器。
因此,隐藏输入并显示其值。这是一个完整的脚本,它使用jQuery的强大功能来做到这一点:
// ==UserScript==
// @name Make Priority more user friendly
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant GM_getValue
// ==/UserScript==
//--- The @grant is to subvert a huge design flaw, introduced with GM version 1.
var oldInput = $("input[name=prio]");
var priorityVal = oldInput.val ();
oldInput.after ('<b id="gmPriorityValue">' + priorityVal + '</b>');
oldInput.remove ();
$("#gmPriorityValue").before ('<input type="hidden" name="prio">');
$("input[name=prio]").val (priorityVal);
更改@include
值以匹配您的站点。
请注意,您无法更改<input>
s 类型,因此我们删除旧输入并创建一个具有相同值但隐藏的新输入。
回复do that without jquery? the pc has no internet connection
::
你要把脚本文件偷偷放到电脑上,对吧?:)
也下载并偷偷 jQuery 到它上面。将 jQuery 文件和用户脚本文件放在同一个文件夹中,将@require
行更改为:
// @require jquery.min.js
然后脚本将安装得很好,不需要互联网连接。
回复maybe the easiest way is to disable the input field
::
好的,执行此操作的脚本是:
// ==UserScript==
// @name Make Priority more user friendly
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant GM_getValue
// ==/UserScript==
var oldInput = document.querySelector ("input[name=prio]");
oldInput.setAttribute ("disabled", "disabled");
更新:
问题中省略了极其重要的信息——主要是针对 Firefox 2.0(!!!) 和 Greasemonkey 0.8。鉴于此,将最后一个脚本的代码更改为:
var oldInput = document.getElementsByName ("prio");
oldInput[0].setAttribute ("disabled", "disabled");
它应该可以工作,但无法测试,而且兼容性表甚至没有涵盖这样一个过时的浏览器。