2010-06-06 103 views
1

我是新来的。我有一个与greasemonkey有关的问题。greasemonkey脚本选择单选按钮

一个页面包含多个无线电扣扣值和一个选择是,则此正确的选择选项的页面

单选按钮的存在,其结构是

<form name="bloogs" action="/myaddres.php" id="bloogs" method="post" > 

然后形式内隐藏隐藏字段作为

<input type=hidden value="abcd" name="ans"> 

然后所有的单选按钮的值按照与

<input type="radio" id="r1" name="opt" value="abcd"> abcd 
<input type="radio" id="r2" name="opt" value="efgh"> efgh 
<input type="radio" id="r3" name="opt" value="ijkl"> ijkl 

因而我需要值的按钮= ABCD是尽快“检查”在网页加载。由于

+0

任何额外的信息评论在这里..我会尽量发布它,谢谢。 – technocrat 2010-06-06 07:20:04

+0

不能这样做:' abcd' – Sarfraz 2010-06-06 07:49:12

+0

没有一个答案有效。这些值在每个页面上不断变化。我需要从隐藏字段中提取值,然后选择对应的单选按钮 – technocrat 2010-06-06 07:53:27

回答

0

我没有做过的Greasemonkey,但是这可能会帮助:

使用jQuery做

$('[value="abcd"]').click() 

好运。

2

有一些方法可以使用:

您可以通过将在selected="selected"像这样预先选择它:

<input type="radio" id="r1" name="opt" value="abcd" checked="checked" /> abcd 

您可以使用jQuery做它很容易(我不知道它是否适用于greasmonky,尽管如此)

$(function(){ 
    $('input[value="abcd"]').attr('checked', 'checked'); 
}); 

你可以通过所有元件回路和选择的一个与生的javascript

var form = document.getElementById('bloogs'); 

for(var i=0; i<form.elements.length; i++) 
{ 
    if (form.elements[i].type == 'radio') 
    { 
    if (form.elements[i].value == 'abcd') 
    { 
     form.elements[i].setAttribute('checked', 'checked'); 
     break; 
    } 
    } 
} 

更新:

这使用jQuery和读取来自隐藏字段的值后,选择一个电台:

$(function(){ 
    $('input[value="' + $('#hidden_field_id').val() + '"]').attr('checked', 'checked'); 
}); 

或用原始javascript:

var form = document.getElementById('bloogs'); 
var hidden_value = document.getElementById('hidden_field_id').value; 

for(var i=0; i<form.elements.length; i++) 
{ 
    if (form.elements[i].type == 'radio') 
    { 
    if (form.elements[i].value == hidden_value) 
    { 
     form.elements[i].setAttribute('checked', 'checked'); 
     break; 
    } 
    } 
} 

更新2:

按名称,这里是你如何去:

$(function(){ 
    $('input[value="' + $('input[name="ans"]').val() + '"]').attr('checked', 'checked'); 
}); 
+0

我不知道jscript。还需要代码在greasemonkey中工作。我想gm只支持javascript代码。 – technocrat 2010-06-06 08:01:21

+0

@ muqtar:是的js(jquery)由gm支持。 – Sarfraz 2010-06-06 08:03:10

+0

好的。但正如我所说的每个新页面的价值变化,所以把value = abcd不起作用。正如我所说的那样,隐藏域的值必须被提取,然后必须检查与它相对应的单选按钮。 – technocrat 2010-06-06 08:07:48

0

如果你想使用jQuery与你要去的GreaseMonkey必须善于编写延迟和尝试/重试类型代码。您需要从这样的事情开始:

var _s1 = document.createElement('script'); 
_s1.src = 'http://www.ghostdev.com/jslib/jquery-1.3.2.js'; 
_s1.type = 'text/javascript'; 
document.getElementsByTagName('head')[0].appendChild(_s1); 

将jQuery加载到您的页面。接下来,您将设置工作,像这样的东西了:

function dojQueryStuff() { 
    if (jQuery == undefined) { 
    setTimeout(dojQueryStuff, 1000); 
    } else { 
    // In here is where all of my code goes that uses jQuery. 
    } 
} 

dojQueryStuff(); 

您已经定义了会检查jQuery的存在的功能,如果没有找到它在1秒钟之后再试。这给脚本加载时间。请注意,如果您没有使用自己的jQuery副本,那么我的示例中列出的副本不会提供$变量。在脚本结尾处我有var $j = jQuery.noConflict();,所以您可以通过$jjQuery访问jQuery功能。

+0

对于当前版本的greasemonkey,这不再是必需的 - 您现在可以在安装脚本时使用@require加载库。 – rampion 2010-06-08 15:00:40

+0

我不知道这一点。谢谢! – 2010-06-08 15:26:14

+0

无法理解jquery ..要么放入整个jscript的greasemonkey代码或JavaScript的gm代码。 Thaks – technocrat 2010-06-09 11:59:01