Javascript.RU

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

Обязательный выбор значения в Autocomplete
Всем привет! С языком не знаком. Подскажите, пожалуйста, как правильно указать:
1) обязательность выбора значения из списка подсказок, а если выбор не был сделан, чтобы выводилось сообщение (я так понимаю, с помощью проверки события change?);
2) ограничить количество выводимых подсказок;
3) подсказки выводятся по мере ввода букв (последовательно), а не по совпадению в любом месте в слове.
Шапка:
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script>
  $( function() {
    var availableTags = [
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL",
      "ColdFusion",
      "Erlang",
      "Fortran",
      "Groovy",
      "Haskell",
      "Java",
      "JavaScript",
      "Lisp",
      "Perl",
      "PHP",
      "Python",
      "Ruby",
      "Scala",
      "Scheme"
    ];
    $( "#from" ).autocomplete({
      source: availableTags
    });
    $( "#to" ).autocomplete({
      source: availableTags
    });
	} );
  </script>

<form action="'. $act .'" method="post" name="form">
<div class="table_form">
<div class="table_form_td"><input class="table_form_input" name="from" type="text" required placeholder="Откуда" id="from"/>
<div class="table_form_td"><input class="table_form_input" name="to" type="text" required placeholder="Куда" id="to" /></div>
<div class="table_form_td"><input class="table_form_input_button" type="submit" value="Найти билеты" /></div>
</div>

Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 30.09.2017, 19:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Бронислав,
учите язык и документацю на плагин
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.0/jquery-ui.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.0/jquery-ui.css"/>
    <style>
        #search-query {
            width:300px;
            padding:5px 10px;
            margin-left:10px;
        }
        /****** jQuery Autocomplete CSS *************/
        .ui-corner-all {
            -moz-border-radius: 0;
            -webkit-border-radius: 0;
            border-radius: 0;
        }
        .ui-menu {
            border: 1px solid lightgray;
            font-family: Verdana, Arial, Helvetica, sans-serif;
            font-size: 15px;
            background-color: white;
        }
        .ui-menu .ui-menu-item a {
            color: #888;
            display: block;
        }

        .ui-menu .ui-menu-item a:hover {
            border: 1px solid lightgray;
        }
        .ui-menu .ui-menu-item:hover {
            display: block;
            text-decoration: none;
            color: #3D3D3D;
            cursor: pointer;
            background-color: lightgray;
            background-image: none;
            border:0;
        }
        .ui-widget-content .ui-state-hover, .ui-widget-content .ui-state-focus {
            border: 1px solid lightgray;
            background-image: none;
            background-color: lightgray;
            font-weight: bold;
            color: #3D3D3D;
        }
    </style>
</head>
<body>
<label>Search:</label>
<input id="search-query" type="text" />

<script>
var $_searchQuery = $("#search-query");
var availableTags = [
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL",
      "ColdFusion",
      "Erlang",
      "Fortran",
      "Groovy",
      "Haskell",
      "Java",
      "JavaScript",
      "Lisp",
      "Perl",
      "PHP",
      "Python",
      "Ruby",
      "Scala",
      "Scheme"
    ];

var err = "";
$_searchQuery.autocomplete({
    close: function(event, ui) {if(availableTags.indexOf(this.value)==-1) err = "поле Откуда обязательно к заполнению"},
    open : function(event, ui) {err = ""},
    source: function(request, response) {
      var max = 2;
      var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" );
      response(availableTags.filter(function(item) {
      return  matcher.test( item );
}).splice(0,max))
    }
});
$_searchQuery.on("blur", function() {
err && alert(err)
})
</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 02.10.2017, 23:31
Новичок на форуме
Отправить личное сообщение для Бронислав Посмотреть профиль Найти все сообщения от Бронислав
 
Регистрация: 30.09.2017
Сообщений: 3

А как сделать так, чтобы :
1) при переходе в другой input табом или нажатием мышки вне поля, автоматически выбиралось значение, которое было взято автофокусом из списка подсказок (пример: http://busfor.ru);
2) вместо модального окна выводился div с предупреждением под input`ом при нажатии на кнопку, если значение не было выбрано из списка (пример: );
3) при активировании input'а вылезал список подсказок, каждый раз, когда его активируешь (пример: http://busfor.ru).
Спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 02.10.2017, 23:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Бронислав,
может быть в раздел работа ...
Ответить с цитированием
  #5 (permalink)  
Старый 10.10.2017, 02:06
Новичок на форуме
Отправить личное сообщение для Бронислав Посмотреть профиль Найти все сообщения от Бронислав
 
Регистрация: 30.09.2017
Сообщений: 3

...
<input class="table_form_input_button" type="submit"  value="Знайти квитки"  id="find" />
...
<script>
var $_searchQuery = $("#from");
var availableTags = [
      "AppleScript",
	  "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL",
      "ColdFusion",
      "Erlang",
      "Fortran",
      "Groovy",
      "Haskell",
      "Java",
      "JavaScript",
      "Lisp",
      "Perl",
      "PHP",
      "Python",
      "Ruby",
      "Scala",
      "Scheme"
    ];

$_searchQuery.autocomplete({
	autoFocus: true,
	source: function(request, response) {
      var max = 7;
      var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" );
      response(availableTags.filter(function(item) {
      return  matcher.test( item );
}).splice(0,max))
    }
});

$_searchQuery.on("blur", function() {if(availableTags.indexOf(this.value)==-1)
$(".table_form_error").css("display","block")
  else
	$(".table_form_error").css("display","none");
});

var $_searchQuery1 = $("#to");
$_searchQuery1.autocomplete({
	autoFocus: true,
	source: function(request, response) {
      var max = 7;
      var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" );
      response(availableTags.filter(function(item) {
      return  matcher.test( item );
}).splice(0,max))
    }
});

$_searchQuery1.on("blur", function() {if(availableTags.indexOf(this.value)==-1)
$(".table_form_error1").css("display","block")
   else
	$(".table_form_error1").css("display","none");
});

var $buy = $("#find");
$buy.click(function ()
{if(availableTags.indexOf(from.value)==-1)
	$(".table_form_error").css("display","block")
else
       return false    	
});

$buy.click(function ()
{if(availableTags.indexOf(to.value)==-1)
	$(".table_form_error1").css("display","block")
else
       return false
 });
$buy.click(function ()                                                                //<<<<<
{if(availableTags.indexOf(from.value && to.value)==-1)
	return false
});
</script>

Подскажите, пожалуйста, как разобраться с кнопкой (последнее условие), чтобы нормально срабатывало условие "если значение из from и из to не попадает в массив, то ничего не делаем (отображаются ошибки виджета), а если и то и то значение из массива, то скрипт заканчивает работу и дальше его обрабатывает php-скрипт.
Спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 10.10.2017, 02:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Бронислав,
if(availableTags.indexOf(from.value)==-1 || availableTags.indexOf(to.value)==-1)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выбор значения из массива mortido Общие вопросы Javascript 9 14.07.2015 19:41
Реакция на выбор значения из datalist IndigoHollow Events/DOM/Window 9 07.10.2014 14:30
Выбор значения get переменной из подключения к скрипту cript Общие вопросы Javascript 4 04.02.2014 15:36
выбор значения селекта jquery tiho Общие вопросы Javascript 3 28.12.2012 11:43
Выбор только 1 значения chexbox Amateur Internet Explorer 9 21.06.2011 13:19