Удалить двойной http: // из ввода, используя jQuery - PullRequest
4 голосов
/ 14 июня 2010

У меня есть текстовое поле со значением по умолчанию http://.Теперь, когда пользователь вставляет URL-адрес (если он не знает, что делает, как и большинство людей), это выглядит так: http://http://www.google.com.Я видел сайт, который, как только у вас есть http://http://, удаляет его с помощью JavaScript.

Я не знаком с JavaScript, поэтому кто-нибудь может мне помочь?

Не могухотите очистить поле только от фокуса.

Ответы [ 4 ]

3 голосов
/ 14 июня 2010

Упрощение и использование функции replace :

var url = "http://http://google.com";
url = url.replace("http://http://","http://");

... это в основном заменит первую строку "http://http://" на вторую, "http://".

Вам нужно будет вызвать это при изменении содержимого поля. Например, используя jQuery:

$("#myfield").change(function(e){
  $(this).val($(this).val().replace("http://http://","http://"));
});

без jQuery (не уверен на 100% в этом):

document.getElementById("myfield").onChange = function(){
  var val=document.getElementById("myfield").value;
  document.getElementById("myfield").value = value.replace("http://http://","http://");
}

Не связано, но стоит упомянуть: это не AJAX, это простой javascript. Ajax - это термин, используемый при попытке асинхронного взаимодействия с сервером с использованием объекта XMLHTTP

Ajax (сокращение от асинхронного JavaScript и XML) представляет собой группу взаимосвязанных методов веб-разработки, используемых на стороне клиента для создания интерактивных веб-приложений.С помощью Ajax веб-приложения могут извлекать данные с сервера асинхронно в фоновом режиме, не мешая отображению и отображению.поведение существующей страницы.

( через )

2 голосов
/ 14 июня 2010

Никакого Аякса, чтобы делать такую ​​магию.

Это сделает это:

$(function(){
  $('textarea').bind('keydown', function(e){
    var $this = $(this);
     if(e.which === 86 && e.ctrlKey){
       setTimeout(function(){
          $this.val($this.val().replace(/http:\/\/http:\/\//,"http://"));
       }, 1);
     }
  });
});​

Это заменит http:// на ctrl+v, если он уже существует. Вы также можете вызвать ту же самую процедуру для события change, если пользователь использует контекстное меню для вставки.

1 голос
/ 14 июня 2010

Вам не нужен ajax, чтобы сделать это, просто простой javascript может сработать.

jQuery(document).ready(function(){

    jQuery('#idofurtextfield').blur(function(){

        jQuery(this).val(jQuery(this).val().replace(/(http:\/\/)\1/, '$1'));

    });

});
1 голос
/ 14 июня 2010

Всегда приятно иметь опцию без регулярных выражений (экономя эти драгоценные микросекунды!):

var url = "http://http://google.com";
url = url.substring(url.lastIndexOf("http://"));

// -> "http://google.com"
...