在Bootstrap标签中修改项目beforeItemAdd输入

时间:2018-09-17 01:48:19

标签: jquery twitter-bootstrap bootstrap-tags-input

问题一直存在。 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'
  }
})

1 个答案:

答案 0 :(得分:0)

如果只是过滤后的域名,我建议使用正则表达式替换。在这里有效:

{{1}}