我得到了一个jQuery函数,可以在有人打字时检查文本区域的"有效"URL。
$(".url2").keyup(validNum).blur(validNum);
function validNum() {
var initVal = $(this).val();
outputVal = initVal.replace(/(http|ftp|https):'/'/['w'-_]+('.['w'-_]+)+(['w'-'.,@?^=%&:/~'+#]*['w'-'@?^=%&/~'+#])$/,"replace this link by bla..");
if (initVal != outputVal) {
$(this).val(outputVal);
}}
});
问题是,一旦"http://www.ab"是键入的,而不是等到按下空格(完整的url,等待空格,用这个函数替换)。我想实现的是,人们可以键入一个完整的urlhttp://www.example.org/site?id=1&等等。所以我认为"空间"是启动函数的触发器。有人能帮我,或者有人有更好的主意吗?
非常感谢
wordi
如果您希望空格或空白字符触发验证,请使用以下方法:
$(".url2").keyup(validateOnWhiteSpace).blur(validNum);
function validateOnWhiteSpace() {
if(event.keyCode == 9 || event.keyCode == 13 || event.keyCode == 32) {
validNum.call(this, arguments);
}
}
function validNum() {
var initVal = $(this).val();
outputVal = initVal.replace(/(http|ftp|https):'/'/['w'-_]+('.['w'-_]+)+(['w'-'.,@?^=%&:/~'+#]*['w'-'@?^=%&/~'+#])$/,"replace this link by bla..");
if (initVal != outputVal) {
$(this).val(outputVal);
}}
});
我认为如果你只是更改正则表达式,你就会得到你想要的
/(http|ftp|https):'/'/['w'-_]+('.['w'-_]+)+(['w'-'.,@?^=%&:/~'+#]*['w'-'@?^=%&/~'+#])('s){1}$/
这里有一个jsfiddle,它似乎可以工作
我还不能评论第一个线程,但要回答您关于PHP正则表达式在jQuery中不起作用的问题,是因为开头有^,结尾有$。^与字符串的开头匹配,$与字符串的结尾匹配。去掉它将允许regexp在字符串中的任何点进行匹配。
示例:
^abc''d$
将匹配:
"abc1"
不匹配:
"Zabc1"
因为"a"不是字符串的第一个字符。
$(".url2").onchange(validNum).blur(validNum);
function validNum() {
var initVal = $(this).val();
outputVal = initVal.replace(/(http|ftp|https):'/'/['w'-_]+('.['w'-_]+)+(['w'-'.,@?^=%&:/~'+#]*['w'-'@?^=%&/~'+#])$/,"replace this link by bla..");
if (initVal != outputVal) {
$(this).val(outputVal);
}
}