Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проверка строки(JavaScript)
 
 автор: VYB   (18.10.2006 в 16:12)   письмо автору
 
 

Как проверить введенную в текстовое поле строку на присутствие в ней разных символов(можно повторяющихся)?

   
 
 автор: elenaki   (18.10.2006 в 16:36)   письмо автору
 
   для: VYB   (18.10.2006 в 16:12)
 

примерно так (смотря какие разные символы нужны):


case "alnum": 
        case "alphanumeric": 
           { 
              var charpos = objValue.value.search("[^A-Za-z0-9]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
               if(!strError || strError.length ==0) 
                { 
                  strError = "Only alphanumeric symbols allowed"; 
                }//if 
                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
                return false; 
              }//if 
              break; 
           }//case alphanumeric 
        case "num": 
        case "numeric": 
           { 
              var charpos = objValue.value.search("[^0-9]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                if(!strError || strError.length ==0) 
                { 
                  strError = objValue.name+": Only digits allowed "; 
                }//if               
                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
                return false; 
              }//if 
              break;               
           }//numeric 
        case "price": 
        case "num_price": 
           { 
              var charpos = objValue.value.search("[^0-9\.]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                if(!strError || strError.length ==0) 
                { 
                  strError = objValue.name+": Only digits and '.' allowed "; 
                }//if               
                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
                return false; 
              }//if 
              break;               
           }//numeric    
        case "alphabetic": 
        case "alpha": 
           { 
              var charpos = objValue.value.search("[^A-Za-z]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                  if(!strError || strError.length ==0) 
                { 
                  strError = objValue.name+": Only alphabetic characters allowed "; 
                }//if                             
                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
                return false; 
              }//if 
              break; 
           }//alpha 
        case "alnumhyphen":
            {
              var charpos = objValue.value.search("[^A-Za-z0-9\-_]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                  if(!strError || strError.length ==0) 
                { 
                  strError = objValue.name+": characters allowed are A-Z,a-z,0-9,- and _"; 
                }//if                             
                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
                return false; 
              }//if             
break;
}


как детки говорят - у меня 3 конфеты, 2 одинаковых и одна разная :)

   
 
 автор: VYB   (18.10.2006 в 17:22)   письмо автору
 
   для: elenaki   (18.10.2006 в 16:36)
 

Большое спасибо!!!:-)
А нельзя ли как-нибудь по-проще?
Нужно выявить сам факт, что строка состоит хотя бы из двух разных символов,как это условие верно, то вернуть false.
Я попробовал вставить часть вашего кода в функцию, но она не работает...
Может быть подскажете, что не так?
Вот страничка index.htm:

<html>
<head>
<title>Кодирование по методу Шеннона-Фано</title>
<meta content="TEXT/HTML; CHARSET=WINDOWS-1251" http-equiv=CONTENT-TYPE>
</head>
<script language="JavaScript">
function Check(theForm)
{
if(theForm.string.value=="")
{
  alert("Вы не ввели строку!");
return (false);
}
if(theForm.string.value.length==1)
{
  alert("Вы ввели символ, а не строку!");
return (false);
}


var charpos = theForm.string.value.search("[^A-Za-z0-9\-_]"); 
if(theForm.string.value.length > 0 && charpos >= 0) 

if(!strError || strError.length ==0) 

strError = theForm.string.name+": characters allowed are A-Z,a-z,0-9,- and _"; 
}//if 
alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
return (false); 
}
return (true);
}
</script>
<body>
<center><strong>Кодирование по методу Шеннона-Фано</strong></center>
<form action="enc.php" method="post" onsubmit="return Check(this)">
<table width="30%" border="1" cellspacing="1" cellpadding="1" height="72" align="center">
  <tr> 
    <td width="51%"> 
      <div align="center">исходная строка</div>
    </td>
    <td colspan="2" width="49%"> 
      <div align="center"> 
        <input type="text" name="string">
      </div>
    </td>
  </tr>
  <tr> 
    <td colspan="3"> 
      <div align="center"> 
        <input type="submit" name="encode" value="зашифровать">
      </div>
    </td>
  </tr>
</table>
</form>
</body>
</html>

   
 
 автор: 12345   (18.10.2006 в 19:45)   письмо автору
 
   для: VYB   (18.10.2006 в 16:12)
 

>проверить введенную в текстовое поле строку на присутствие в ней разных символов(можно повторяющихся)?

если понимать буквально, то задача переформулируется в то, состоит ли строка из повторений первого символа или нет?

Это легко проверить условием
i=1;L=true;
while(i<s.length)if(s.charAt(i)!=s.charAt(0)){L=false;break;}
при длине >=2

   
 
 автор: VYB   (18.10.2006 в 21:02)   письмо автору
 
   для: 12345   (18.10.2006 в 19:45)
 

идея понятна,но при подстановке в функцию не работает(с изменениями параметров)

   
 
 автор: 12345   (18.10.2006 в 23:45)   письмо автору
 
   для: VYB   (18.10.2006 в 21:02)
 

Тогда может, постановка задачи неправильна?

   
 
 автор: VYB   (19.10.2006 в 08:39)   письмо автору
 
   для: 12345   (18.10.2006 в 23:45)
 

у меня функция всегда выдает, что символы должны быть разными.
А вообще надо примерно так:
Ввели sss -сообщение, что символы должны быть разными
Ввели sssa -возврат true

   
 
 автор: 12345   (19.10.2006 в 13:30)   письмо автору
 
   для: VYB   (19.10.2006 в 08:39)
 

<script>s=1;
while(s){
  i=1;L=false;
  while(i<s.length)if(s.charAt(i++)!=s.charAt(0)){L=true;break;}
  s=prompt(L+' ; new string:','');
}</script>

   
 
 автор: VYB   (19.10.2006 в 15:53)   письмо автору
 
   для: 12345   (19.10.2006 в 13:30)
 

Да! То, что надо, СПАСИБО!!!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования