2013-03-28 2 views
0

Мне нужно выполнить проверку URL-адреса для формы CS. У меня уже есть сценарий, который проверяет наличие http и добавляет его, если не существует. Однако, если я добавлю другую функцию для проверки, независимо от того, где я ее разместил, он возвращает URL-адрес недействительным.Проверка подлинности домена JQuery после добавления http

Это то, что я бегу

<script type="text/javascript"> 
$(function(){ 
$('.url').blur(function(e) { 
    if ($(this).val().match(/^http/) || $(this).val().match(/^https/)) /*define the http & https strings */ { 
     $.noop() /*if strings exist, do nothing */ 
    } 
    else { 
     // get value from field 
     var cur_val = $(this).val(); 
     // do with cur_val 
     $(this).val('http://' + cur_val); 
    }   

}); 

}); 

</script> 

Это вторая функция, которую я использовал для проверки:

<script type="text/javascript"> 
function validate() { 
    var url = document.getElementById("url").value; 
    var pattern = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; 
    if (pattern.test(url)) { 
     alert("Url is valid"); 
     return true; 
    } 
     alert("Url is not valid!"); 
     return false; 

} 
</script> 

Что я делаю неправильно? Я попытался объединить 2 функции, но мои навыки js выбирают точный момент, чтобы потерпеть неудачу.

Спасибо!

+0

Хорошо - можете ли вы активировать функцию проверки подлинности? Действительно ли функция «добавить http» действительно создает допустимые URL-адреса? Не могли бы вы показать нам форму, в которой вы используете это (или, по крайней мере, часть, содержащую URL-адреса?) –

ответ

1

Я не знаю, если это то, что вы точно ищете,

var pattern = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; 

pattern.test("http://google.com"); // True 
pattern.test("google.com");   // False 

Условное условие вы используете это бесполезно, так как вы вернуть результат матча шаблона в любом случае.

Так обновленное Validate функция должна просто вернуть шаблон результатов & должен выглядеть следующим образом:

function validate() { 

    var url = document.getElementById("url").value; 

    var pattern = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; 

    return pattern.test(url); 
} 

Предполагая, что существует DOM элемент с ID URL.

+0

спасибо, сработало! –

0

Сразу же, похоже, ваша функция «добавить http» ищет теги с class="url", а функция validate ищет метки с id="url". Если у вас ничего нет с этим id, я полагаю, что он всегда будет возвращать недействительный.

Смежные вопросы