Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 10.12.2012, 18:41
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

.keyup или .change
С помощью .keyup я реализовал проверку количества введённых символов, отличный атрибут.
В данном же случае я решил задачу таким образом:

$('#myinput').change(function(){
	if($(this).val() != ''){
		if($(this).val().search('Ключевое слово') == 0){
			Выполнение следующих функций
		}else{
			Не выполнять следующие функции
		}
	}
});


Спасибо всем. Познакомили меня с keyup поближе, который я тут же применил, и подтолкнули в решению

Последний раз редактировалось mi.rafaylik, 10.12.2012 в 18:55.
Ответить с цитированием
  #12 (permalink)  
Старый 10.12.2012, 19:37
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Тогда и $.trim() до кучи надо юзать
Ответить с цитированием
  #13 (permalink)  
Старый 11.12.2012, 11:58
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

Вопрос в продолжение.
1. В myinput вводится кодовое слово.
2. Если совпадение найдено, выполняется действие - в myselect выбирается option 3 (добавляется атрибут selected), а option 2 и 4 блокирует (добавляется атрибут disabled). Всё отлично.
3. Но (! отступление) оба эти элемента находятся в форме myform которая отправляется методом $_POST, и здесь через PHP сервер проверяет правильно ли заполнены поля, и, если неправильно, сервер возвращает форму с сообщением о незаполненных полях.

В случае с input или textarea я просто могу вернуть value с помощью PHP вот так:
<input name="myinput" id="myinput" value='<?php if($_POST["myinput"]) { echo $_POST["myinput"]; } ?>'>

Но с элементом select такое не проходит..
Записать состояние myselect конечно можно и с помощью jQuery cookies:
$(document).ready(function(){
	$('#myselect').change(function(){$.cookie('myselect', $(this).attr('value'));});
});

Но в в этом случае состояние записывается, только если произошёл именно выбор .change (нажатие на этом элементе myselect).
То есть я не могу применить этот метод, если состояние myselect изменено с помощью ввода ключевого слова в myinput, т.к. здесь не было фактического нажатия (выбора) на элементе myselect.
Возможно я что-то упустил, и вместо .change для записи куки нужно использовать что-то другое..

Конечно, как вариант решения - валидировать форму на правильность заполненных полей можно и через jQuery, но в самой форме есть captcha, и тогда получается проблема с сессиями, т.к. без перезагрузки страницы не открывается новая сессия..

Вопрос: Как сохранить состояние myselect (какие option выбраны, а какие блокированы), если состояние этого элемента было изменено без нажатия на него (с помощью другого элемента), после проверки формы и перезагрузки страницы?
Есть мысли по этому поводу?

Напомню структуру формы:
<form name="myform" id="myform">
    <input name="myinput" id="myinput">
    <select name="myselect" id="myselect">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
    </select>
</form>

Последний раз редактировалось mi.rafaylik, 11.12.2012 в 13:19. Причина: Добавил структуры самой формы
Ответить с цитированием
  #14 (permalink)  
Старый 11.12.2012, 13:30
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

1. Можно просто отправлять форму ajax'ом и тогда myselect у тебя останется таким каким он был перед отправкой формы.
2. запоминать value у option's в куки, те что нашлись в куках, те значит не disabled, а остальные disabled или наоборот
Ответить с цитированием
  #15 (permalink)  
Старый 11.12.2012, 13:42
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

ОлегА, Спасибо, попробую вторым способом, правда пока не знаю как записывать куки именно для option.
Здесь похожую задачу обсуждают, постараюсь разобраться.

Не хочется на ajax форму валидировать, т.к. для капчи не будет открываться новая сессия, т.е. сама капча будет обновляться, но в текущей сессии, что не есть феншуй как мне кажется.

Последний раз редактировалось mi.rafaylik, 11.12.2012 в 14:39.
Ответить с цитированием
  #16 (permalink)  
Старый 11.12.2012, 14:37
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

Ну сессию можно обновлять через тот же аякс, как вариант.

а насчет как сохранять просто все

$('#myselect option').each(function(i){
    if(! $(this).attr('disabled')){
         options = { path: "/", expires: 10 };

         $.cookie('myselect_value['+i+']', $(this).value(), options);
    } 
});


сам не проверял данный код, но как то так вроде
Ответить с цитированием
  #17 (permalink)  
Старый 11.12.2012, 19:06
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

Сообщение от ОлегА Посмотреть сообщение
а насчет как сохранять просто все
$('#myselect option').each(function(i){
    if(! $(this).attr('disabled')){
         options = { path: "/", expires: 10 };

         $.cookie('myselect_value['+i+']', $(this).value(), options);
    } 
});

сам не проверял данный код, но как то так вроде
Попробовал, ВСЕ option становятся заблокированными после перезагрузки страницы..

Последний раз редактировалось mi.rafaylik, 12.12.2012 в 01:20.
Ответить с цитированием
  #18 (permalink)  
Старый 11.12.2012, 23:37
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

ну если бы я протестил, добил конечно, ну да ладно, рад помочь)
Ответить с цитированием
  #19 (permalink)  
Старый 12.12.2012, 01:18
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

ОлегА буду рад если поможете ))
Попробовал реализовать запись состояния блокированного option вот так:
$(document).ready(function(){
	//записываем куки для конкретного option
	$('#myselect').change(function(){$.cookie('myselect-option1', $('#myselect option').eq(1).attr('disabled'));}); 
	//читаем куки для этого option
	$('#myselect option').eq(1).attr('disabled', $.cookie('myselect-option'));
});

То есть если option 1 блокируется, это состояние записывается в куки и после перезагрузки страницы он остаётся блокированным.
Но (!) если после этого снять блокировку фактически, то разблокированное состояние в куки не записывается, и этот option и дальше остаётся заблокированным..
Думаю, происходит это потому, что если элемент разблокирован, то у него пропадает атрибут disabled="disabled", а значит в куки новое состоние разблокированное не записывается. Как быть?

Последний раз редактировалось mi.rafaylik, 12.12.2012 в 02:56.
Ответить с цитированием
  #20 (permalink)  
Старый 12.12.2012, 08:27
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

дело в том что вы
$('#myselect option').eq(1).attr('disabled', $.cookie('myselect-option'));
тут и включаете блокировку option, т.к атрибуту без разницы будет он disabled=true или disabled=false - это все равно означает блокировку делайте что то типа этого -

if($.cookie('myselect-option') === true){
$('#myselect option').eq(1).attr('disabled','disabled');
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
checkbox, radio и select c option Hekumok Общие вопросы Javascript 8 12.04.2016 17:51
Cохранение выбранного option в select. NiCKSoNka Элементы интерфейса 17 05.03.2012 15:48
Динамические option в select lurii Элементы интерфейса 10 14.01.2011 11:23
Пользовательский скрипт для выбора option в select по умолчанию justalittleperson Элементы интерфейса 1 04.10.2010 06:13
Вставка текста в textarea после выбора select option modelisto Общие вопросы Javascript 2 14.10.2009 19:27