Ответы пользователя по тегу JavaScript
  • Как "подружить" jquery ui autocomplete с динамической формой?

    kandkonst
    @kandkonst Автор вопроса
    А теперь внимание! Правильный ответ:
    $(document).on("focus",[selector],function(e) {
        if ( !$(this).data("autocomplete") ) { // If the autocomplete wasn't called yet:
            $(this).autocomplete({             //   call it
                source:['abc','ade','afg']     //     passing some parameters
            });
        }
    });

    var count = 0;
    $(cloneButton).click(function() {
        var newid = "cloned_" + (count++); // Generates a unique id
        var clone = $(source) // the input with autocomplete your want to clone
            .clone()
            .attr("id",newid) // Must give a new id with clone
            .val("") // Clear the value (optional)
            .appendTo(target);
    });


    Источник
    Ответ написан
    Комментировать
  • Как передать ID и Имя в input'ы в автодополнении jquery.autocomplete.js?

    Листинг файла index.php
    <!DOCTYPE HTML>
    <HTML>
     <HEAD>
       <title>Jquery UI autocomplete</title>
       <meta charset="utf-8">
       <link rel="stylesheet" href="jquery-ui.min.css">
       <link rel="stylesheet" href="jquery-ui.theme.min.css">
       <SCRIPT type="text/javascript" src="jquery-1.11.1.min.js"></SCRIPT>
       <SCRIPT type="text/javascript" src="jquery-ui.min.js"></SCRIPT>
       <SCRIPT type="text/javascript">
    
        $(document).ready(function(){
          $('#person').autocomplete({
            source: "person_autocomplete.php",
            minLength: 3,
            select: function(event,ui) {
                $("#pers_id").attr("value",ui.item.id);
                $sel_person = ui.item.label;
            },
          });
        });
    
       </SCRIPT>
    </HEAD>
    <BODY>
    
        <FORM action = "<?=$_SERVER['SCRIPT_NAME']?>" method = "post" onsubmit="submitted = true;">
            <INPUT type = "text" readonly="readonly" size="8" id="pers_id" ><INPUT type="text" size="50" id="person" value="" oninput="if($sel_person != $(this).attr('value')) { $('#pers_id').attr('value', ''); }">
            <SELECT id="">
            <INPUT type = "text" size = "50" >
            <BR>
            <INPUT type = "submit" value = "Send" id = "sendData">
        </FORM>
    </BODY> 
    </HTML>


    Листинг файла обработки AJAX-запроса person_autocomplete.php
    <?
          mysql_connect($sServer, $sUser, $sPass) or die("Не могу подключиться к базе данных\n\r".mysql_error());
          mysql_select_db($sDb) or die("Не могу открыть базу данных\n\r".mysql_error());
          mysql_query('SET NAMES utf8');
          if (isset($_GET['term'])){
              $returnArr = array();
              $res = mysql_query("SELECT * FROM `tperson` WHERE `Name_rus` LIKE '".$_GET['term']."%'");
               while($row = mysql_fetch_assoc($res)) {
                  $currval = array();
                  $currval['label'] =  $row['Name_rus'];
                  $currval['id'] = $row['id'];
                  array_push($returnArr, $currval);
               }
          }
          echo json_encode($returnArr);
    ?>

    Ответ на Ваш вопрос в последнем цикле while:
    1. формируем промежуточный массив c ФИО и ID.
    2. добавляем его в результирующий
    3. profit :)

    Также в примере можете увидеть способ очистки поля ID при внесении изменений в INPUT с autocomplete
    Ответ написан
    Комментировать