将协议添加到href值

时间:2017-07-06 06:53:11

标签: javascript regex

我添加了一个编辑器,用户可以输入他们想要的任何内容,然后我在留言卡下显示输入的文字,因此如果用户输入了Click here&amp;它的HTML部分是<a href="google.com">Click here</a>所以当在消息卡下显示这个并点击这里然后它没有重定向到google.com它会转到http://my-website.com/google.com,因为href值没有任何协议,所以如何将协议添加到其值中,单个消息中可能有多个链接,有些可能有协议,有些则没有。

2 个答案:

答案 0 :(得分:0)

将编辑器中的HTML添加到消息卡后,只需循环遍历<a>链接,并检查每个锚链接的协议。如果没有协议,则添加一个协议。

$('#messageCard').find('a').each(function() {
    //get the href value of each anchor element
    var hrefValue = $(this).attr('href');
    //use regular expression to check if the href contain http:// or    
    //https://. If not then add http://
    if (!hrefValue.match(/^[a-zA-Z]+:\/\//))
       {
          $(this).attr('href','http://' + hrefValue);
       }
});

答案 1 :(得分:0)

让用户在编辑器中输入HTML代码可能不是一个好主意。但如果你坚持这样做,你可以尝试

&#13;
&#13;
$(function() {
  $('a').each(function() {
    if (!$(this).attr("href").startsWith("http")) {
      $(this).attr("href", "http://" + $(this).attr("href"));
    }
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="google.com">Click here</a>
&#13;
&#13;
&#13;