Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   проверить все текстовые поля на disabled (https://javascript.ru/forum/events/39151-proverit-vse-tekstovye-polya-na-disabled.html)

Гробовщик 18.06.2013 08:27

проверить все текстовые поля на disabled
 
Полным ходом идёт шаманство над скриптом который я приводил ранее, удалось запихать его в таблицу, работает хорошо, не падает, но теперь надо его проверить, а именно найти все текстовые поля с атрибутом "disabled" и здесь я умудрился запутаться (слишком уж сложно мне это всё дается)
ну вот мой скриптик:
echo "<form action='proverka.php' method='get' name='form' autocomplete='off' onsubmit='return validate_form ( );'>"; // вывожу форму -функция проверки return validate_form ( )
echo "<table border='1'>";
echo '<tr><td>';
//здесь идёт вывод из базы (цикл)
echo '<input type="checkbox" name="agree1" value="а1" id="agree'.$i.'"></td>
<td><input onclick="this.select();" type="text" id="continue'.$i.'" value="Введите число" name='.$zay["id"].'/>& nbsp;'.$mat["ed_izm"].'</td></tr>';
echo "</table>";
  
<script type="text/javascript" src="js/po_chat_sn.js"></script>
<script>
$(document).ready(function(){
  $('input[id^="agree"]').each(function(){
        var $this = $(this); 
         var nextInp = $this.closest('tr').find('input[id^="continue"]');
         nextInp.attr('disabled',true);
         $this.data('next', nextInp);
      $this.click(function() {    
          var nextInp = $(this).data('next');
          if($(this).is(':checked')){
             nextInp.removeAttr('disabled');
          } else  {
           nextInp.attr('disabled',true);
          }    
        });
  });
});
function validate_form ( )
{
if ($("text[disabled=false]"))
{
alert("Прокатило, я нашёл закрытый текст");
} 
$("text[disabled]").next()   
} 
//-->     
</script>
<input type="submit" id="continue1" value="Продолжим" /> 
</form>

ksa 18.06.2013 08:37

Гробовщик, что есть "закрытые ячейки"?

Гробовщик 18.06.2013 08:48

ksa,
текстовые поля с атрибутом "disabled"

ksa 18.06.2013 09:19

Цитата:

Сообщение от Гробовщик
текстовые поля с атрибутом "disabled"

И в чем именно проблема?
Пройдись по всем инпутам нужного типа и проверяй наличие этого атрибута...

Гробовщик 18.06.2013 09:30

ksa,
Не могу полностью понять можно ли в js скрипте "function validate_form ( )" прописывать на синтаксисе jquery "if ($("text[disabled=false]"))" как он вообще должен правильно выглядеть?
function validate_form ( )
{
if ($("text[disabled=false]"))
{
alert("Прокатило, я нашёл закрытый текст");
}
$("text[disabled]").next()  
}

ksa 18.06.2013 09:47

Цитата:

Сообщение от Гробовщик
Не могу полностью понять

Для понимания нужны тесты! ;)

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(document).ready(function (){
	alert('test 1');
	$('input[disabled=false]').each(function (){
		alert(this.value);
	});
	alert('test 2');
	$('input[disabled]').each(function (){
		alert(this.value);
	});
	alert('test 3');
	$('input:text').each(function (){
		alert($(this).attr('disabled'));
	});
});
</script>
</head>
<body>
<input type='text' value='1' disabled />
<input type='text' value='2' disabled='false'/>
<input type='text' value='3' id='test' />
<input type='text' value='4' />
<script type="text/javascript">
$('#test').attr('disabled',false);
</script>
</body>
</html>

Гробовщик 18.06.2013 10:44

ksa,
Вставил в свой код и действительно всё работает, сижу под свои нужды затачиваю. Большое спасибо. P.S. Понимаю что вопросы нубские, но я только начал изучать.

danik.js 18.06.2013 11:43

Цитата:

Сообщение от ksa
Для понимания нужны тесты!

Я бы еще добавил:
<!DOCTYPE html>
<html>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<body>
<input type='text' value='1' disabled />
<input type='text' value='2' disabled='false'/>
<input type='text' value='3' id='test' />
<input type='text' value='4' />
<script type="text/javascript">
  $('#test').attr('disabled',false);
</script>
<script type="text/javascript">
  alert('test 4');
  $('input:disabled').each(function (){
      alert(this.value);
  });
</script>
</body>
</html>

Причем псевдокласс :disabled нативен (это не расширение jQuery).
Также замечу что вместо манипуляции атрибутом предпочтительней менять соответствующее свойство.

Так этот (быдло)код:
this.click(function() {   
          var nextInp = $(this).data('next');
          if($(this).is(':checked')){
             nextInp.removeAttr('disabled');
          } else  {
           nextInp.attr('disabled',true);
          }   
        });

сворачивается до:

this.click(function() {   
          var nextInp = $(this).data('next'); // вобще это смахивает на изврат кстати
          nextInp.prop('disabled', !this.checked);
        });


Причем я помню что такой код уже приводил. Гробовщик, ты смотрю совсем не учишься и игноришь все советы, а?

Гробовщик 18.06.2013 12:06

danik.js,
Да ну как же можно, я стараюсь разбираться, в данный момент это другой модуль который проверяет вводимые данные. JS пока что мне тяжело даётся для понимания (почему он не может быть как php=( ) , поэтому по крайностям и метаюсь. Может посоветуешь литературку азовую, что бы мне по крайностям не метаться, так сказать совет гуру)


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