我有一个textarea,其默认值为http://
。现在,当用户粘贴网址时(如果他们不知道自己在做什么,就像大多数人一样),它会像http://http://www.google.com
一样出现。我见过一个网站,只要你http://http://
它就会通过JavaScript删除它。
我对JavaScript不熟悉,有人可以帮助我吗?
我不想仅在焦点上清除该字段。
答案 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'));
});
});