jquery - 如果不存在,将 `http://` 添加到字符串
jquery - adding `http://` to string if not present
在我的 laravel 应用程序中,我处理用户提供的外部 URL。有时用户会在没有 http://
前缀的情况下粘贴它。
UI 用过这个问题的答案:
我尝试使用这些说明
var lnk = $('#confirmation_URL').val();
var lnk2 = $('#confirmation_URL').val();
//adding http if not present
// if (lnk && !lnk.match(/^.+:\/\/.*/)) { // produces jQuery error
if (lnk && !lnk.match(/^http([s]?):\/\/.*/)) { // produces jQuery error
var lnk = $('http://' + lnk2);
console.log( "prefix http added successfully" );
}
粘贴 URL 时出现此错误:
jquery-2.1.4.min.js:2 Uncaught Error: Syntax error, unrecognized expression: http://laravel.com/docs/5.1/migrationsga.error @ jquery-2.1.4.min.js:2ga.tokenize @ jquery-2.1.4.min.js:2ga.select @ jquery-2.1.4.min.js:2ga @ jquery-2.1.4.min.js:2n.fn.extend.find @ jquery-2.1.4.min.js:2n.fn.init @ jquery-2.1.4.min.js:2n @ jquery-2.1.4.min.js:2(anonymous function) @ dodaj:1460n.event.dispatch @ jquery-2.1.4.min.js:3r.handle @ jquery-2.1.4.min.js:3
我试过的
jQUery 2.14 和 3.0beta1 的控制台都会弹出错误
只是为了测试愚蠢的错误并排除潜在的原因(例如 jQUery 影响原始变量),我创建了两个内容相同的变量:lnk
和 lnk2
.
感谢您的建议。
var lnk = $('#confirmation_URL').val();
var lnk2 = $('#confirmation_URL').val();
//adding http if not present
// if (lnk && !lnk.match(/^.+:\/\/.*/)) { // produces jQuery error
if (lnk && !lnk.match(/^http([s]?):\/\/.*/)) { // produces jQuery error
// Here produces error actually
// lnk = $('http://' + lnk2);
lnk = 'http://' + lnk2;
$('#confirmation_URL').val(lnk);
console.log( "prefix http added successfully" );
}
已更新,抱歉错误。
首先尝试创建 RegExp 对象
regex = new RegExp('^http([s]?):\/\/.*')
if (lnk && !regex.test(lnk)) {
lnk.val('http://' + lnk2);
console.log( "prefix http added successfully" );
}
请试试这个
$('#confirmation_URL').keyup(function () {
if ( ($(this).val().length >=5) && ($(this).val().substr(0, 5) != 'http:') && ($(this).val().substr(0, 5) != 'https') ) {
$(this).val('http://' + $(this).val());
}
});
在我的 laravel 应用程序中,我处理用户提供的外部 URL。有时用户会在没有 http://
前缀的情况下粘贴它。
UI 用过这个问题的答案:
我尝试使用这些说明
var lnk = $('#confirmation_URL').val();
var lnk2 = $('#confirmation_URL').val();
//adding http if not present
// if (lnk && !lnk.match(/^.+:\/\/.*/)) { // produces jQuery error
if (lnk && !lnk.match(/^http([s]?):\/\/.*/)) { // produces jQuery error
var lnk = $('http://' + lnk2);
console.log( "prefix http added successfully" );
}
粘贴 URL 时出现此错误:
jquery-2.1.4.min.js:2 Uncaught Error: Syntax error, unrecognized expression: http://laravel.com/docs/5.1/migrationsga.error @ jquery-2.1.4.min.js:2ga.tokenize @ jquery-2.1.4.min.js:2ga.select @ jquery-2.1.4.min.js:2ga @ jquery-2.1.4.min.js:2n.fn.extend.find @ jquery-2.1.4.min.js:2n.fn.init @ jquery-2.1.4.min.js:2n @ jquery-2.1.4.min.js:2(anonymous function) @ dodaj:1460n.event.dispatch @ jquery-2.1.4.min.js:3r.handle @ jquery-2.1.4.min.js:3
我试过的
jQUery 2.14 和 3.0beta1 的控制台都会弹出错误
只是为了测试愚蠢的错误并排除潜在的原因(例如 jQUery 影响原始变量),我创建了两个内容相同的变量:lnk
和 lnk2
.
感谢您的建议。
var lnk = $('#confirmation_URL').val();
var lnk2 = $('#confirmation_URL').val();
//adding http if not present
// if (lnk && !lnk.match(/^.+:\/\/.*/)) { // produces jQuery error
if (lnk && !lnk.match(/^http([s]?):\/\/.*/)) { // produces jQuery error
// Here produces error actually
// lnk = $('http://' + lnk2);
lnk = 'http://' + lnk2;
$('#confirmation_URL').val(lnk);
console.log( "prefix http added successfully" );
}
已更新,抱歉错误。
首先尝试创建 RegExp 对象
regex = new RegExp('^http([s]?):\/\/.*')
if (lnk && !regex.test(lnk)) {
lnk.val('http://' + lnk2);
console.log( "prefix http added successfully" );
}
请试试这个
$('#confirmation_URL').keyup(function () {
if ( ($(this).val().length >=5) && ($(this).val().substr(0, 5) != 'http:') && ($(this).val().substr(0, 5) != 'https') ) {
$(this).val('http://' + $(this).val());
}
});