如果网址包含 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);
答案 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