2015-08-24 4 views
0

У меня есть элемент управления, который позволяет пользователю сохранять некоторые ссылки. Он может добавить отображаемое значение ссылки (в основном текст в пределах <a>) и сама ссылка (атрибут href).Knockout attr href output issue

Проблема заключается в том, что я не могу знать, будь он, добавив, протокол, а также (http:// или https:// части, которая обычно является результат копирования вставки ссылки из адресной строки браузера) или он вручную, набрав ' WWW .... '.

В принципе, если пользователь адрес вручную (WWW ..) он будет получать добавляется к текущему домену - вот пример - http://jsfiddle.net/ty4tLtkj/4/

Этого можно избежать, если пользователь добавляет http:// часть в передней части ссылка - пример здесь - http://jsfiddle.net/ty4tLtkj/5/

Есть ли способ убедиться, что ссылка, которая была введена, НИКОГДА не добавляется к доменному имени?

ответ

1

Соответствует строке для http;

var out = $("#input").val(); 
if(!out.match(/^https?:\/\//i)) //User didn't type http(s):// 
{ 
    out = "http://" + out; //So add http:// 
} 

Сейчас: "http://google.nl" будет такой же, но "www.google.nl" будет "http://www.google.nl"

Для объяснения .match (/^https:? \/\ // я) , это regex:

  • ^= начинается с.
  • http
  • s? = s или no s.
  • : \/\/=: //
  • я = регистронезависимы
1

Конечно, вы можете:

if (pathname.substring(0, 7) == "http://" || pathname.substring(0, 8) == "https://") 

или

if (pathname.substring(0, 3) == "www") 

В противном случае его не представляется возможным, потому что ссылки без http(s):// получить автоматически добавляется к текущему URL.