greasemonkey脚本选择单选按钮

时间:2010-06-06 07:12:43

标签: javascript 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的按钮。感谢

3 个答案:

答案 0 :(得分:2)

您可以使用以下方法:

1 您可以通过这样放置selected="selected"来预先选择它:

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

2 您可以使用 jQuery 轻松完成(我不知道它是否适用于greasmonky)

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

3 您可以遍历所有元素并选择带有原始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');
});

答案 1 :(得分:0)

我没有做过油脂,但这可能会有所帮助:

使用jQuery并执行

$('[value="abcd"]').click()
祝你好运。

答案 2 :(得分:0)

如果您正在尝试使用GreaseMonkey的jQuery,那么您将不得不擅长编写延迟和尝试/重试类型代码。你需要从这样的事情开始:

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功能。