Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сравнение двух строк (https://javascript.ru/forum/misc/30723-sravnenie-dvukh-strok.html)

drac0Sha 13.08.2012 16:24

Сравнение двух строк
 
Здравствуйте, не очень силён в программировании, поэтому прошу о подсказке...
Дело в том, что у меня есть два поля, где я получаю строку (номер телефона)

Код:

$('.tel1 span').keyup(function(e){
  var curr_el=$(document.activeElement),
  curr_value=curr_el.val(),
  max_len=parseInt(curr_el.attr('maxlength'));
  curr_el.val(curr_value.replace(/[^0-9]+/,''))
  curr_value=curr_el.val();
  if(curr_value.match('[0-9]{'+max_len+'}')){
  curr_el.parent().next().find('input').focus();
  if(checkSumm(curr_el.parents('.tel1').find('input:text'))){
    $(this).parents('.row').removeClass('error').addClass('ok');
    if(allIsValid()){
    disable(button,false);
    }
  }
  }
  if(checkSumm(curr_el.parents('.tel1').find('input:text'))){
  if(allIsValid()){
    disable(button,false);
    }
  }else{
  $(this).parents('.row').removeClass('ok').addClass('error');
  disable(button,true);
  }
 });
//для 2 телефона
$('.tel2 span').keyup(function(e){
  var curr_el=$(document.activeElement),
  curr_value=curr_el.val(),
  max_len=parseInt(curr_el.attr('maxlength'));
  curr_el.val(curr_value.replace(/[^0-9]+/,''))
  curr_value=curr_el.val();
  if(curr_value.match('[0-9]{'+max_len+'}')){
  curr_el.parent().next().find('input').focus();
  if(checkSumm(curr_el.parents('.tel2').find('input:text'))){
    $(this).parents('.row').removeClass('error').addClass('ok');
    if(allIsValid()){
    disable(button,false);
    }
  }
  }
  if(checkSumm(curr_el.parents('.tel2').find('input:text'))){
  if(allIsValid()){
    disable(button,false);
    }
  }else{
  $(this).parents('.row').removeClass('ok').addClass('error');
  disable(button,true);
  }
 });

И интуитивно я понимаю, что сравнение двух полученных из инпута номеров должно проходить как-то так

Код:

//создаешь какое-нибудь поле
<input type="password" value="" id="text1">
//создаешь 2ое поле
<input type="password" value="" id="text2">
<script>
var _tel1 = document.getElementById('tel1').value
var _tel2 = document.getElementById('tel2').value
function prov()
if(_tel1==_tel2) {
то будет исполнятся твое действие...
}
else {
то будет исполнятся действие,при котором телефоны будут не равны
}
}
</script>

Однако, инпуты у меня немного другие...а так как знания ещё не очень большие в Яваскрипте, синтаксисе языка и т.п. Рассчитываю на ваш опыт.

Deff 13.08.2012 16:29

drac0Sha,
Выложите
1. HTML код инпутов -
2. Варианты Правильных(неправильных) вводимых строк
3. Опишите ситуацию: что с чем сравнивается, по-какому событию и что надо вывести

drac0Sha 13.08.2012 16:59

1. HTML код инпутов
Код:

<div class="data-form">
<div class="row">
<label for="alt11">Телефон 1:</label>
<div class="holder-row">
        <div class="input-text tel-wrap tel">
        <span>
        <label>+7 (<input type="text" maxlength="3" id="phoneSource1" />) </label>
        <label>  <input type="text" maxlength="3" id="phoneSource2"/></label>
        <label> - <input type="text" maxlength="2" id="phoneSource3"/></label>
        <label> - <input type="text" maxlength="2" id="phoneSource4"/></label>
        </span>
        </div>
        <span class="ok-holder">&nbsp;</span>
        <span class="error-holder">Телефон<br />введен<br />не верно</span>
        </div>
        </div>
        <div class="row">
        <label for="alt12">Телефон 2:</label>
        <div class="holder-row">
        <div class="input-text tel-wrap tel">
        <span>
        <label>+7 (<input type="text" maxlength="3" id="phoneDestination1"/>) </label>
        <label>  <input type="text" maxlength="3"  id="phoneDestination2"/></label>
        <label> - <input type="text" maxlength="2"  id="phoneDestination3"/></label>
        <label> - <input type="text" maxlength="2"  id="phoneDestination4"/></label>
        </span>
        </div>
        <span class="ok-holder">&nbsp;</span>
        <span class="error-holder">Телефон<br />введен<br />не верно</span>
        </div>
        </div>

2. Варианты правильных и неправильных:
правильные: +79035555555
неправильные: 89035555555
Это у меня реализовано)

3. Ситуацию в том, что у меня идёт ввод пользователем двух телефонов (своего и чужого), правильный ввод или нет (см.п.2) работает, то есть остаётся только проверить не ввёл ли пользователь один и тот же номер (свой или чужой) в два поля.

drac0Sha 15.08.2012 16:31

выложил)

Deff 15.08.2012 19:57

drac0Sha,
Завтра - Гляну

Deff 15.08.2012 20:50

Пока ничего не делал - Есть Вопросы:
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>



<div class="data-form">
  <div class="row">
	<label for="alt11">Телефон 1:</label>
	<div class="holder-row">
		<div class="input-text tel-wrap tel">
			<span>
				<label>+7 (<input type="text" maxlength="3" id="phoneSource1" />) </label>
				<label>  <input type="text" maxlength="3" id="phoneSource2"/></label>
				<label> - <input type="text" maxlength="2" id="phoneSource3"/></label>
				<label> - <input type="text" maxlength="2" id="phoneSource4"/></label>
			</span>
		</div>

		<span class="ok-holder">&nbsp;</span>
		<span class="error-holder">Телефон<br />введен<br />не верно</span>
	</div>
  </div>

  <div class="row">
	<label for="alt12">Телефон 2:</label>
	<div class="holder-row">
		<div class="input-text tel-wrap tel">
			<span>
				<label>+7 (<input type="text" maxlength="3" id="phoneDestination1"/>) </label>
				<label>  <input type="text" maxlength="3"  id="phoneDestination2"/></label>
				<label> - <input type="text" maxlength="2"  id="phoneDestination3"/></label>
				<label> - <input type="text" maxlength="2"  id="phoneDestination4"/></label>
			</span>
	</div>
	<span class="ok-holder">&nbsp;</span>
	<span class="error-holder">Телефон<br />введен<br />не верно</span>
  </div>

</div>


<script type="text/javascript">

	$('.tel-wrap.tel:first span input').keyup(function(){
	  var curr_el=$(this),
	  curr_value=curr_el.val(),
	  max_len=parseInt(curr_el.attr('maxlength'));
	  curr_el.val(curr_value.replace(/[^0-9]+/,''))

	  curr_value=curr_el.val();
	  if(curr_value.match('[0-9]{'+max_len+'}')){

	     curr_el.parent().next().find('input').focus();

	  	if(checkSumm(curr_el.parents('.tel1').find('input:text'))){

	     	   $(this).parents('.row').removeClass('error').addClass('ok');

	  		if(allIsValid()){

	     	    	      disable(button,false);

	        	}
   	  	}
  	  }

	if(checkSumm(curr_el.parents('.tel1').find('input:text'))){
	  if(allIsValid()){
	    disable(button,false);
	  }
	}else{
	   $(this).parents('.row').removeClass('ok').addClass('error');
	   disable(button,true);
	}
});

//для 2 телефона
	$('.tel-wrap.tel:last span input').keyup(function(){//alert("B")
	var curr_el=$(this),
	curr_value=curr_el.val(),
	max_len=parseInt(curr_el.attr('maxlength'));
	curr_el.val(curr_value.replace(/[^0-9]+/,''))
	curr_value=curr_el.val();
	if(curr_value.match('[0-9]{'+max_len+'}')){
	  curr_el.parent().next().find('input').focus();
	    if(checkSumm(curr_el.parents('.tel2').find('input:text'))){
	       $(this).parents('.row').removeClass('error').addClass('ok');
	          if(allIsValid()){
		     disable(button,false);
	     	  }
	    }
	}

	if(checkSumm(curr_el.parents('.tel2').find('input:text'))){
	  if(allIsValid()){
	     disable(button,false);
	  }
	}else{
	  $(this).parents('.row').removeClass('ok').addClass('error');
	  disable(button,true);
	}
});

</script>

Deff 15.08.2012 20:55

1. Нафига столько проверок ?
Почему - не провеять заполнение - когда все поля одного телефона заполнены ? - тогда и проверять ?
'Телефон введен не верно' - в этом случае лучше заменить на аlert.

2. Если так подойдёт - завтра сделаю

Да и как правильно - два телефона - одинаковых - или разных ?

PashPP 15.08.2012 21:01

Тут все просто, вроде. В чужой код лезть не буду, так как я сам новичек. Но вроде так, не воспринимайте мой пример верьез:
<!DOCTYPE html>
<html>
<head>
  <title>ddd</title>
</head>
<body>
  <div class="data-form">
<div class="row">
<label for="alt11">Телефон 1:</label>
<div class="holder-row">
  <div class="input-text tel-wrap tel">
  <span>
  <label>+7 (<input type="text" maxlength="3" id="phoneSource1" />) </label>
  <label>  <input type="text" maxlength="3" id="phoneSource2"/></label>
  <label> - <input type="text" maxlength="2" id="phoneSource3"/></label>
  <label> - <input type="text" maxlength="2" id="phoneSource4"/></label>
  </span>
  </div>
  <span class="ok-holder">&nbsp;</span>
  <span class="error-holder">Телефон<br />введен<br />не верно</span>
  </div>
  </div>
  <div class="row">
  <label for="alt12">Телефон 2:</label>
  <div class="holder-row">
  <div class="input-text tel-wrap tel">
  <span>
  <label>+7 (<input type="text" maxlength="3" id="phoneDestination1"/>) </label>
  <label>  <input type="text" maxlength="3"  id="phoneDestination2"/></label>
  <label> - <input type="text" maxlength="2"  id="phoneDestination3"/></label>
  <label> - <input type="text" maxlength="2"  id="phoneDestination4"/></label>
  </span>
  </div>
  <span class="ok-holder">&nbsp;</span>
  <span class="error-holder">Телефон<br />введен<br />не верно</span>
  </div>
  <input type="button" value="Проверить" onclick="checks()" />
  </div>
<script type="text/javascript">
function checks() {
  var tel11 = document.getElementById('phoneSource1').value;
  var tel12 = document.getElementById('phoneSource2').value;
  var tel13 = document.getElementById('phoneSource3').value;
  var tel14 = document.getElementById('phoneSource4').value;
  var phoneSource = tel11 + tel12 + tel13 + tel14;
  var tel21 = document.getElementById('phoneDestination1').value;
  var tel22 = document.getElementById('phoneDestination2').value;
  var tel23 = document.getElementById('phoneDestination3').value;
  var tel24 = document.getElementById('phoneDestination4').value;
  var phoneDestination = tel21 + tel22 + tel23 + tel24;
  if (phoneSource == phoneDestination) {
    alert("Не пытайся схитрить, падла!")
  }
  else {
    alert("Все нормуль. ")
  }
}
</script>
</body>

</html>

drac0Sha 15.08.2012 22:18

PashPP, спасибо за ответ, завтра попробую...сейчас уже не у компьютера

drac0Sha 15.08.2012 22:22

Цитата:

Сообщение от Deff (Сообщение 197836)
1. Нафига столько проверок ?
Почему - не провеять заполнение - когда все поля одного телефона заполнены ? - тогда и проверять ?
'Телефон введен не верно' - в этом случае лучше заменить на аlert.

2. Если так подойдёт - завтра сделаю

Да и как правильно - два телефона - одинаковых - или разных ?

Столько проверок согласен не совсем логичный выбор, но просто мне для красоты ввода на странице так было удобнее)
"Телефон введен не верно" работает (это проверка символов, чтобы только числа вводили"

Проверку хочется сделать именно на тот случай, когда два номера введеные 1 и 2 если ОДИНАКОВЫЕ, то выводило ошибку, а если разные то всё нормально.вот)

если телефон правильно набрал, то там напротив поля ввода появляется галочка, а если какая то ошибка то телефон введен неверно, так вот сейчас там если два телефон ввести одинаковые то напротив двух телефонов покажутся галочки ( все нормально),а нужно дописать в том коде чтобы напротив одного показало галочку, а напротив второго написало телефон введен неверно

надеюсь, я понятно описал проблема)) Спасибо большое за отзывчивость)

Deff 15.08.2012 22:31

Цитата:

Сообщение от drac0Sha
Проверку хочется сделать именно на тот случай, когда два номера введеные 1 и 2 если ОДИНАКОВЫЕ, то выводило ошибку (алерт как раз), а если разные то всё нормально.вот)
надеюсь, я понятно описал проблема)) Спасибо большое за отзывчивость)

Попробую

Deff 16.08.2012 00:09

<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>




<div class="data-form">
  <div class="row">
	<label for="alt11">Телефон 1:</label>
	<div class="holder-row">
		<div class="input-text tel-wrap tel">
			<span>
				<label>+7 (<input type="text" maxlength="3" id="phoneSource1" />) </label>
				<label>  <input type="text" maxlength="3" id="phoneSource2"/></label>
				<label> - <input type="text" maxlength="2" id="phoneSource3"/></label>
				<label> - <input type="text" maxlength="2" id="phoneSource4"/></label>
			</span>
		</div>

		<span class="ok-holder">&nbsp;</span>
		<span class="error-holder">Телефон<br />введен<br />не верно</span>
	</div>
  </div>

  <div class="row">
	<label for="alt12">Телефон 2:</label>
	<div class="holder-row">
		<div class="input-text tel-wrap tel">
			<span>
				<label>+7 (<input type="text" maxlength="3" id="phoneDestination1"/>) </label>
				<label>  <input type="text" maxlength="3"  id="phoneDestination2"/></label>
				<label> - <input type="text" maxlength="2"  id="phoneDestination3"/></label>
				<label> - <input type="text" maxlength="2"  id="phoneDestination4"/></label>
			</span>
	</div>
	<span class="ok-holder">&nbsp;</span>
	<span class="error-holder">Телефон<br />введен<br />не верно</span>
  </div>

</div>


<script type="text/javascript">

	$('.tel-wrap.tel:first span input').keyup(function(){
	  var curr_el=$(this),
	  curr_value=curr_el.val(),
	  max_len=parseInt(curr_el.attr('maxlength'));
	  curr_el.val(curr_value.replace(/[^0-9]+/,''))

	  curr_value=curr_el.val();
	  if(curr_value.match('[0-9]{'+max_len+'}')){

	     curr_el.parent().next().find('input').focus();

	  	if(checkSumm(curr_el.parents('.tel1').find('input:text'))){

	     	   $(this).parents('.row').removeClass('error').addClass('ok');

	  		if(allIsValid()){

	     	    	      disable(button,false);

	        	}
   	  	}
  	  }

	if(checkSumm(curr_el.parents('.tel1').find('input:text'))){
	  if(allIsValid()){
	    disable(button,false);
	  }
	}else{
	   $(this).parents('.row').removeClass('ok').addClass('error');
	   disable(button,true);
	}
});

//для 2 телефона 

	$('.tel-wrap.tel:last span input').keyup(function(){//alert("B")
	var curr_el=$(this),
	curr_value=curr_el.val(),
	max_len=parseInt(curr_el.attr('maxlength'));
	curr_el.val(curr_value.replace(/[^0-9]+/,''))
	curr_value=curr_el.val();
	if(curr_value.match('[0-9]{'+max_len+'}')){
	  curr_el.parent().next().find('input').focus();
	    if(checkSumm(curr_el.parents('.tel2').find('input:text'))){
	       $(this).parents('.row').removeClass('error').addClass('ok');
	          if(allIsValid()){
		     disable(button,false);
	     	  }
	    }
	}

	if(checkSumm(curr_el.parents('.tel2').find('input:text'))){
	  if(allIsValid()){
	     disable(button,false);
	  }
	}else{
	  $(this).parents('.row').removeClass('ok').addClass('error');
	  disable(button,true);
	}
});

function TestSowpadNumber (){
   if(validNumb1 && validNumb2 && tel1==tel2){
      alert("Номера телефонов совпадают, что недопускается!")
   }
}


  var tel1, validNumb1=false;
	$('.tel-wrap.tel:first span input').change(function(){
	   tel1 = '';
	   $(this).parents('span').find('input').each( function() {

	      tel1+=$(this).val();

	   });

	  tel1=parseInt(tel1)||null;
	  if(tel1<100000000)validNumb1=false;
	  else validNumb1=true; //alert(tel1);
	  TestSowpadNumber ()

	});


  var tel2, validNumb2=false;
	$('.tel-wrap.tel:last span input').change(function(){
	   tel2 = '';
	   $(this).parents('span').find('input').each( function() {

	      tel2+=$(this).val();

	   });

	  tel2=parseInt(tel2)||null;
	  if(tel2<100000000)validNumb2=false;
	  else validNumb2=true;
	  TestSowpadNumber ()

	});

</script>

drac0Sha 17.08.2012 16:22

а если попробовать не алерт, а именно

если телефон правильно набрал, то там напротив поля ввода появляется галочка, а если какая то ошибка то телефон введен неверно, так вот сейчас там если два телефон ввести одинаковые то напротив двух телефонов покажутся галочки ( все нормально),а нужно дописать в том коде чтобы напротив одного показало галочку, а напротив второго написало телефон введен неверно

это сложно!?



но очень Вам благодарен!!

Serjuk 20.08.2012 17:05

Может надо заменить
alert("Номера телефонов совпадают, что недопускается!")
на
disable(button,false);
?

drac0Sha 20.08.2012 17:44

попробовал, нет

Deff 20.08.2012 17:50

Serjuk,
Делаю - не быстро - (*появляются новые элементы - а я уже не помню реализацию

Deff 20.08.2012 18:26

<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>


<div class="data-form">
  <div class="row">
	<label for="alt11">Телефон 1:</label>
	<div class="holder-row">
		<div class="input-text tel-wrap tel">
			<span>
				<label>+7 (<input type="text" maxlength="3" id="phoneSource1" />) </label>
				<label>  <input type="text" maxlength="3" id="phoneSource2"/></label>
				<label> - <input type="text" maxlength="2" id="phoneSource3"/></label>
				<label> - <input type="text" maxlength="2" id="phoneSource4"/></label>
			</span>
		</div>

		<span class="ok-holder">&nbsp;</span>
		<span class="error-holder">Телефон<br />введен<br />не верно</span>
	</div>
  </div>

  <div class="row">
	<label for="alt12">Телефон 2:</label>
	<div class="holder-row">
		<div class="input-text tel-wrap tel">
			<span>
				<label>+7 (<input type="text" maxlength="3" id="phoneDestination1"/>) </label>
				<label>  <input type="text" maxlength="3"  id="phoneDestination2"/></label>
				<label> - <input type="text" maxlength="2"  id="phoneDestination3"/></label>
				<label> - <input type="text" maxlength="2"  id="phoneDestination4"/></label>
			</span>
	</div>
	<span class="ok-holder">&nbsp;</span>
	<span class="error-holder">Телефон<br />введен<br />не верно</span>
  </div>

</div>


<script type="text/javascript">

	$('.tel-wrap.tel:first span input').keyup(function(){
	  var curr_el=$(this),
	  curr_value=curr_el.val(),
	  max_len=parseInt(curr_el.attr('maxlength'));
	  curr_el.val(curr_value.replace(/[^0-9]+/,''))

	  curr_value=curr_el.val();
	  if(curr_value.match('[0-9]{'+max_len+'}')){

	     curr_el.parent().next().find('input').focus();

	  	if(checkSumm(curr_el.parents('.tel1').find('input:text'))){

	     	   $(this).parents('.row').removeClass('error').addClass('ok');

	  		if(allIsValid()){

	     	    	      disable(button,false);

	        	}
   	  	}
  	  }

	if(checkSumm(curr_el.parents('.tel1').find('input:text'))){
	  if(allIsValid()){
	    disable(button,false);
	  }
	}else{
	   $(this).parents('.row').removeClass('ok').addClass('error');
	   disable(button,true);
	}
});

//для 2 телефона 

	$('.tel-wrap.tel:last span input').keyup(function(){//alert("B")
	var curr_el=$(this),
	curr_value=curr_el.val(),
	max_len=parseInt(curr_el.attr('maxlength'));
	curr_el.val(curr_value.replace(/[^0-9]+/,''))
	curr_value=curr_el.val();
	if(curr_value.match('[0-9]{'+max_len+'}')){
	  curr_el.parent().next().find('input').focus();
	    if(checkSumm(curr_el.parents('.tel2').find('input:text'))){
	       $(this).parents('.row').removeClass('error').addClass('ok');
	          if(allIsValid()){
		     disable(button,false);
	     	  }
	    }
	}

	if(checkSumm(curr_el.parents('.tel2').find('input:text'))){
	  if(allIsValid()){
	     disable(button,false);
	  }
	}else{
	  $(this).parents('.row').removeClass('ok').addClass('error');
	  disable(button,true);
	}
});

var TrueTel='<input id="F1" type="checkbox" maxlength="3" checked disabled/>';
var FalseTel='<img id="F2" src="http://s1.uploads.ru/i/ZgoP7.png" width="33" style="margin:0 0 -10px -16px;"/>';

function SetStatRead(select,str,disable,clear){
 $(select).parents('span').find("#F1,#F2").remove();
 if(disable){
   	   $(select).parents('label').find('input').each( function() {
		$(this).attr("disabled","true")
	   });
 }
 if(clear){
   	   $(select).parents('label').find('input').each( function() {
		$(this).val("")
	   });
 }
  $(select).parents('span').prepend(str);
}

function TestSowpadNumber (){
   if(validNumb1 && validNumb2){
      SetStatRead('.tel-wrap.tel:first span input',TrueTel,true,false)
      if(tel1==tel2){
      SetStatRead('.tel-wrap.tel:last span input',FalseTel,false,true)
         alert("Номера телефонов совпадают, что недопускается!");
      }  else  SetStatRead('.tel-wrap.tel:last span input',TrueTel,true,false)
   }   
}


  var tel1, validNumb1=false;
	$('.tel-wrap.tel:first span input').change(function(){
	   tel1 = '';
	   $(this).parents('span').find('input').each( function() {

	      tel1+=$(this).val();

	   });

	  tel1=parseInt(tel1)||null;
	  if(tel1<1000000000)validNumb1=false;
	  else validNumb1=true; //alert(tel1);
	  TestSowpadNumber ()

	});


  var tel2, validNumb2=false;
	$('.tel-wrap.tel:last span input').change(function(){
	   tel2 = '';
	   $(this).parents('span').find('input').each( function() {

	      tel2+=$(this).val();

	   });

	  tel2=parseInt(tel2)||null;
	  if(tel2<1000000000)validNumb2=false;
	  else validNumb2=true;
	  TestSowpadNumber ()

	});

</script>

Поправил

drac0Sha 20.08.2012 19:45

Спасибо большое!!! всё работает)


Часовой пояс GMT +3, время: 02:55.