使用jQuery从输入中删除双http://

时间:2010-06-14 15:09:21

标签: javascript jquery duplicate-removal

我有一个textarea,其默认值为http://。现在,当用户粘贴网址时(如果他们不知道自己在做什么,就像大多数人一样),它会像http://http://www.google.com一样出现。我见过一个网站,只要你http://http://它就会通过JavaScript删除它。

我对JavaScript不熟悉,有人可以帮助我吗?

我不想仅在焦点上清除该字段。

4 个答案:

答案 0 :(得分:3)

保持简单并使用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)是一组   相互关联的网站开发   客户端使用的技术   创建交互式Web应用程序   使用Ajax,Web应用程序可以   从服务器检索数据   在后台异步   不干扰显示器   和现有页面的行为。

via

答案 1 :(得分:2)

没有Ajax可以做那种魔术。

这样做:

$(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事件上调用相同的例程 要粘贴的上下文菜单。

答案 2 :(得分:1)

总是很高兴有一个无正则表达式选项(保存那些宝贵的微秒!):

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

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

答案 3 :(得分:1)

你不需要ajax就可以做到这一点,只需简单的javascript即可。

jQuery(document).ready(function(){

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

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

    });

});