Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.07.2013, 11:26
Новичок на форуме
Отправить личное сообщение для Meshok_smexa Посмотреть профиль Найти все сообщения от Meshok_smexa
 
Регистрация: 29.07.2013
Сообщений: 4

проверяем существование адреса.
Изучаю js второй день, не могу никак решить данную проблему.
Проблема: есть форма ввода, в нее юзер вводит некий url адрес, скрипт в свою очередь должен проверить его на вшивость, перед тем, как отправить его дальше.
1.Не пустое ли поле?
2.Похоже ли это на адрес?
3.Существует ли такой url?
с первыми двумя пунктами все акей, а вот третий игнорится категорически. Повелители js, молю, поясните, в чем ошибка и как ее исправить?



<html>
<head>
<script type='text/javascript'>
function validate(){
   var y=document.forms['form']['http'].value;
   //проверяем пункт 1
   if (y.length==0){
      document.getElementById('httpf').innerHTML='*I think someone does not want to work?';
      return false;
   }
   count = 0;
   pos = y.indexOf(".");
   while ( pos != -1 ) {

      count++;
      pos = y.indexOf(".",pos+1);
}

   //проверяем пункт 2
   if (count==0){
      document.getElementById('httpf').innerHTML='*not true! stop lying to me!';
      return false;
   }
//проверяем пункт 3 
var xmlhttp = getXmlHttp()
xmlhttp.open('GET', 'httpf', false);
xmlhttp.send(null);
if(xmlhttp.status != 200) {document.getElementById('httpf').innerHTML='*false url';
      return false;
}

  }
</script>
</head>
<body>
<form name='form' onsubmit='return validate()'>
http:// <input type='text' name='http'> <span style='color:red' id='httpf'></span><br />
<input type='submit' value='send'>
</form>
</body>
</html>

Последний раз редактировалось Meshok_smexa, 29.07.2013 в 11:32.
Ответить с цитированием
  #2 (permalink)  
Старый 29.07.2013, 11:56
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

...
url = document.getElementById('httpf').innerHTML
xmlhttp.open('GET', url, false);
...
Ответить с цитированием
  #3 (permalink)  
Старый 29.07.2013, 12:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Meshok_smexa,
а время пока ходит запрос неучли ... подождите идёт проверка -- ок -- submit формы тойже функцией но без всяких проверок уже - где-то флаг глобально - иначе просто сообщение об ошибке
Ответить с цитированием
  #4 (permalink)  
Старый 29.07.2013, 12:22
Новичок на форуме
Отправить личное сообщение для Meshok_smexa Посмотреть профиль Найти все сообщения от Meshok_smexa
 
Регистрация: 29.07.2013
Сообщений: 4

рони, вроде понимаю о чем вы, но как реализовать это в коде, не могу понять... можно попросить у вас пояснения кодом? каким то примером?
Ответить с цитированием
  #5 (permalink)  
Старый 29.07.2013, 12:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Meshok_smexa,
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script>
var flag = false;
function validate(){
  if(flag) return true;

   var y=document.forms['form']['http'].value;
   //проверяем пункт 1
   if (y.length==0){
      document.getElementById('httpf').innerHTML='*I think someone does not want to work?';
      return false;
   }
  var regexp = 	/^(((f|ht)tp(s)?):\/\/)?(www\.)?([a-zA-Z0-9\-]{1,}\.){1,}?([a-zA-Z0-9\-]{2,}\.[a-zA-Z0-9\-]{2,4}(\.[a-zA-Z0-9\-]{2,4})?)(\/|\?)?$/

   //проверяем пункт 2
   if (!regexp.test(y)){
      document.getElementById('httpf').innerHTML='*not true! stop lying to me!';
      return false;
   }
//проверяем пункт 3
document.getElementById('httpf').innerHTML='pause';
var xmlhttp;
 if (window.XMLHttpRequest)
   {// code for IE7+, Firefox, Chrome, Opera, Safari
   xmlhttp=new XMLHttpRequest();
   }
 else
   {// code for IE6, IE5
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
xmlhttp.open('GET', y, false);
xmlhttp.onreadystatechange = update;
xmlhttp.send(null);

function update()
{
   if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
   flag = true;
    //для проверки
   document.forms['form'].submit()};
   if (xmlhttp.readyState === 4 && xmlhttp.status === 404)
    {document.getElementById('httpf').innerHTML='*false url';}

}
 return false;
  }
</script>
</head>
<body>
<form name='form' onsubmit='return validate()' action="" >
http:// <input type='text' name='http'> <span style='color:red' id='httpf'></span><br />
<input type='submit' value='send'>
</form>
</body>
</html>

Последний раз редактировалось рони, 29.07.2013 в 14:22.
Ответить с цитированием
  #6 (permalink)  
Старый 29.07.2013, 13:15
Новичок на форуме
Отправить личное сообщение для Meshok_smexa Посмотреть профиль Найти все сообщения от Meshok_smexa
 
Регистрация: 29.07.2013
Сообщений: 4

рони,
учесть разные версии браузера однозначно не догадалась бы, спасибо!)) и с флагом теперь все понятно. Однако, ваш скрипт тоже не говорит о плохом нерабочем url, как же быть?
Ответить с цитированием
  #7 (permalink)  
Старый 29.07.2013, 13:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от Meshok_smexa
тоже не говорит о плохом нерабочем url,
и как вы это проверяли? и что он должен говорить?
Ответить с цитированием
  #8 (permalink)  
Старый 29.07.2013, 13:39
Новичок на форуме
Отправить личное сообщение для Meshok_smexa Посмотреть профиль Найти все сообщения от Meshok_smexa
 
Регистрация: 29.07.2013
Сообщений: 4

рони,
if (xmlhttp.readyState === 4 && xmlhttp.status === 404)
    {document.getElementById('httpf').innerHTML='*false url';
 return false;


вот тут, если я все верно понимаю, конечно. Он должен выругаться и отказаться отправлять адрес.
Ответить с цитированием
  #9 (permalink)  
Старый 29.07.2013, 14:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Meshok_smexa,
если страницы несуществует
Сообщение от Meshok_smexa
и сервер вернул 404 -- выдаст эту строку
2.Похоже ли это на адрес?
тут лучше проверяйте похоже или нет на url
смотрите проверку с помощью regexp пост 5 up.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Localsotage ie7 существование? Severtain Общие вопросы Javascript 7 13.07.2012 14:02
Уничтожение E-mail адреса. Duda.Ml1986@gmail.com Оффтопик 19 07.02.2012 13:07
Русские символы в строке адреса parzh-junior Элементы интерфейса 1 11.04.2010 19:12
Сообщение при копировании строки адреса сайта ullltra Общие вопросы Javascript 2 19.11.2009 18:04
Сокрытие панели адреса Arkatic Элементы интерфейса 6 16.07.2009 17:38