操纵输入字段

时间:2012-08-30 18:32:10

标签: javascript greasemonkey firefox2

是否可以删除输入但是使用Greasemonkey显示值?或者禁用它?例如:

<input name="prio" type="text" value="285" disabled="disabled">

我不知道如何编写任何用户脚本。 :(

这是我公司的PC,我无法使用jQuery或编辑原始源代码。

首先来看看更好的理解:

代码如下:http://jsfiddle.net/gv3XF/

但我想要那样:http://jsfiddle.net/gv3XF/1/

我用 Stylish 试了一下但是有了它,我只能隐藏输入。我仍然需要结果的值。

输入始终称为name="prio",但值的数字正在变化。

我想要的是“杀死”输入但显示值的结果。

1 个答案:

答案 0 :(得分:2)

你不能只是“杀死”输入。如果这样做,那么在您提交表单时,可能无法将必要的数据发送到服务器。

所以, 隐藏 输入并显示其值。这是一个完整的脚本,使用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>类型,因此我们删除旧输入并创建一个具有相同值但隐藏的新输入。



回复:do that without jquery? the pc has no internet connection

你要把脚本文件偷偷带到电脑上,对吧? :)
下载并将jQuery偷偷带入它。将jQuery文件和userscript文件放在同一文件夹中,将@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");

它应该可以工作,但是不可能测试,compatibility tables don't even cover such an obsolete browser