问题一直存在。 beforeItemAdd
无法修改数据。我有一个修剪输入数据的功能,例如:
'https://google.com' will become 'google.com'
BUT仍返回未过滤的数据。 (请参见下面的代码)。
代码:
$('input#domains').tagsinput({
tagClass: 'grey',
trimValue: true
});
function isValidURL(string) {
var res = string.match(/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g);
if (res == null)
return false;
else
return true;
}
// Removes http://, https://, www.
function checksDomainInitial(domain){
return domain.replace(/(http(s)?:\/\/)?(www\.)?/, ""); // as suggested by @wp78de
}
$('input#domains').on('beforeItemAdd', function(event) {
if ( isValidURL(event.item) == false ){
event.cancel = true;
alert('"'+event.item+'"' + ' is not a valid Domain URL');
}else{
event.item = checksDomainInitial(event.item);
return event; // not returning the trimmed item ...
// ex: input => 'https://google.com' will become 'google.com'
// PROBLEM: still returns 'https://google.com' NOT 'google.com'
}
})
答案 0 :(得分:0)
如果只是过滤后的域名,我建议使用正则表达式替换。在这里有效:
{{1}}