4

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

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

我不想只清除焦点上的字段。

4

4 回答 4

3

保持简单并使用替换功能:

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 开发技术,用于在客户端创建交互式 Web 应用程序。使用 Ajax,Web 应用程序可以在后台异步地从服务器检索数据,而不会干扰现有页面的显示和行为。

通过

于 2010-06-14T15:12:57.213 回答
2

根本没有阿贾克斯来做那种魔术。

这将做到:

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

于 2010-06-14T15:22:32.767 回答
1

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

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

// -> "http://google.com"
于 2010-06-14T15:15:17.137 回答
1

您不需要 ajax 来做到这一点,只需简单的 javascript 就可以了。

jQuery(document).ready(function(){

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

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

    });

});
于 2010-06-14T15:16:55.997 回答