Как предупредить, когда URL содержит [...] - PullRequest
0 голосов
/ 07 июля 2010

Как я могу отключить поле ввода с помощью jQuery, используя GM, если URL содержит текст ?

Я пытался

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

Я не знаю, что я сделал не так. И я также не знаю, является ли url: code регулярным выражением для использования.

Обновление

Привет еще раз, спасибо, что уделили мне время. Я думаю, что легче спросить / ответить, как вызвать оповещение, когда URL-адрес содержит, например, "NewThread".

Итак, у нас есть URL (например,): http://forum.jswelt.de/newthread.php?do=newthread&f=1, и поле ввода с id = "subject" и меткой для "subject". Если URL содержит «newthread», элемент input- и label-должен быть скрыт. Следующий код работает, но не для меня. Консоль ничего не говорит и не предупредит.


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 ]

3 голосов
/ 07 июля 2010

Выбрось этот фрагмент.Должно быть похоже на

(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);

edit

«$ notfined» означает, что вы либо не загружаете библиотеку jQuery, либо $ перезаписывается.Я поместил весь фрагмент в самозапускающуюся анонимную функцию, которая исправит хотя бы последнюю проблему.

1 голос
/ 07 июля 2010

url:contains не является допустимым JavaScript, и это вызовет ошибку разбора. Как и во всех селекторах jQuery, вы фактически передаете строку для анализа jQuery:

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

Тем не менее, url: не является допустимым селектором jQuery. JQuery на самом деле не является решением этой проблемы; вместо этого используйте window.location.href, чтобы получить текущий URL, и протестируйте его с помощью регулярного выражения:

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

Следующая проблема - ваш код для включения / выключения ваших полей ввода. Это ... за гранью разбитого. Во-первых, если элемент имеет идентификатор, просто используйте селектор #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 на свою страницу. Убедитесь, что вы скачали jQuery и успешно добавили его на свою страницу с помощью тега <script>.

0 голосов
/ 07 июля 2010

Попробуйте эту простую вещь.Не уверен, что это подойдет вам.Но он найдет слово «текст» и отключит ввод

​$('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

0 голосов
/ 07 июля 2010

попробуйте что-то вроде этого ..

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');
}
...