当网址包含[...]时如何提醒

时间:2010-07-07 13:44:12

标签: javascript jquery greasemonkey

如果网址包含 text ,如何使用GM禁用jQuery的输入字段?

我试过

$(document).ready( function() {
    if($("url:contains('text')")){
        $(".input[id=field-owner]:disabled");
    }
    else {
        $(".input[id=field-owner]:enabled");
    }
});

我不知道我做错了什么。而且我也不知道url:code是否是要使用的正则表达式。

更新

你好, 感谢您投入时间。我想当网址包含例如警报时,更容易询问/回答如何拨打提醒“newthread”。

所以,我们有一个网址(例如):http://forum.jswelt.de/newthread.php?do=newthread&f=1, 以及id =“subject”的输入字段和“subject”的标签。 如果url包含“newthread”,则应隐藏input-and label-element。 以下代码有效,但不适合我。控制台什么也没说,但不会提醒。


var url = window.location.href 
url = "http://forum.jswelt.de/newthread.php?do=newthread&f=1";
    var pos = url.search(/newthread/); 
    if(pos >= 0)
        alert("tadaa");
    else
        alert("mist");

:(

谢谢大家的帮助。

编辑插入最终解决方案


if (location.href.indexOf("text") != -1) {
$('#fieldname').attr("disabled", true); 

4 个答案:

答案 0 :(得分:3)

丢掉那个片段。应该像

(function($){
  $(document).ready(function(){
     var url = window.location.href;

     if(/text/g.test(url)){
        $('#field-owner').attr('disabled', 'disabled');
     }
     else{
        $('#field-owner').removeAttr('disabled');
     }
  });
})(jQuery);

修改

“$ not defined”表示您要么未加载jQuery库,要么$被覆盖。 我将整个片段放入一个自动执行的匿名函数中,至少可以修复最后一个问题。

答案 1 :(得分:1)

url:contains不是有效的JavaScript,会导致解析错误。与所有jQuery选择器一样,您实际上是将jQuery的字符串传递给解析:

$("url:contains('text')")

也就是说,url:不是有效的jQuery选择器。 jQuery实际上并不是解决这个问题的方法;而是使用window.location.href获取当前URL,并使用正则表达式对其进行测试:

if (window.location.href.match(/text/)) {
  // ...
}

下一个问题是您的代码启用/禁用输入框。它......超越了破碎。首先,如果元素有ID,只需使用#id选择器。其次,像:enabled这样的选择器用于过滤元素 - 从DOM中提取更多特定元素以供使用。它们实际上并没有改变它们选择的元素的状态。

你想要这样的东西:

if (window.location.href.match(/text/)) {
    // apply disabled attribute
    $('#field-owner').attr('disabled', 'disabled');
} else {
    // remove disabled attribute if it exists
    $('#field-owner').removeAttr('disabled');
}

<强>更新

RE:$ not defined

您没有在页面中包含jQuery库。确保您已downloaded jQuery并通过<script>标记将其成功添加到您的网页中。

答案 2 :(得分:0)

尝试这样的事情..

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

然后你可以做

if (getUrlVars()["text"] != null) {
    $input.attr('disabled','disabled');
}

答案 3 :(得分:0)

尝试这个简单的事情。不确定这会适合你。但它会找到“text”这个词并禁用输入

​$('input').change(function(){
    var temp = $(this).val();
    var searchTerm = 'text';
    if(temp.search('text') > 0 || temp.search(searchTerm) == 0){
        $("#field-owner").attr('disabled', 'disabled');
    }
});​​​​​​

只需更改变量searchTerm并使用它。适合我。 DEMO