2014-01-21 2 views
0

извините за мой английский, но мне нужна помощь. Я пытаюсь создать каскадный тип, основанный на производителях и моделях автомобилей. вот код у меня есть (все это код, который я использовал из примеров, которые я получаю от перемычками, я новичок в веб-программированииTypeahead, каскад, mysql

nuevo_coche.php:. ...

.marcas,.modelos { 
    background-color:#fff; 
    font:8pt helvetica; 
    color:#000; 
    width:250px; 
      border-color:#696969; 
      border-style :solid; 
      border-width :1px; 
      height:15pt; 
     } 

.tt-dropdown-menu { 
    font:8pt helvetica; 
    width: 250px; 
    margin-top: 5px; 
    padding: 8px 12px; 
    background-color: #fff; 
    border: 1px solid #ccc; 
    border: 1px solid rgba(0, 0, 0, 0.2); 
    color: #000; 
    background-color: #e0ffff; 
     } 


     </style> 

     <script language="javascript"> 

     $(document).ready(function() { 

$('input.marcas').typeahead({ 
     name: 'marcas', 
     remote : './marcas.php?query=%QUERY' 
}); 

$('input.modelos').typeahead({ 
    name: 'modelos', 
     remote : './modelos.php?query=%QUERY&nombremarca=' + $('input.marcas').val() 
}); 

     }) 

     function cancelar() { 
      location.href="index.php"; 
     } 
... 

<tr> 
<td width="15%">Marca</td> 
<td width="43%"><input id="marcas" type="text" name="marcas" size="20" class="marcas" placeholder="Introduce marca"></td> 
</tr> 
<tr> 
<td width="15%">Modelo</td> 
<td width="43%"><input id="modelos" type="text" name="modelos" size="20" class="modelos" placeholder="Introduce Modelo"></td> 

...

marcas.php:

включают в себя ("../conectar.php");

если (Исеть ($ _ REQUEST [ 'запрос'])) {

$query = $_REQUEST['query']; 

$sql = mysql_query ("SELECT * FROM marcas WHERE nombremarca LIKE '%{$query}%'"); 
$array = array(); 

while ($row = mysql_fetch_assoc($sql)) { 
    $array[] = $row['nombremarca']; 
} 

echo json_encode ($array); //Return the JSON Array 

}

modelos.php

включают в себя ("../conectar.php");

если (Исеть ($ _ REQUEST [ 'запрос'])) {

$query = $_REQUEST['query']; 
$nombremarca = $_REQUEST['nombremarca']; 

$sel_marcas="SELECT * FROM marcas WHERE nombremarca='$nombremarca'"; 
$rs_marcas=mysql_query($sel_marcas); 
$codmarca=mysql_result($rs_marcas,0,"codmarca"); 

$sql = mysql_query ("SELECT * FROM modelos WHERE nombremodelo LIKE '%{$query}%' AND codmarca='$codmarca'"); 
$array = array(); 

while ($row = mysql_fetch_assoc($sql)) { 
    $array[] = $row['nombremodelo']; 
} 

echo json_encode ($array); //Return the JSON Array 

}

Если я ставлю в строке -- remote : './modelos.php?query=%QUERY&nombremarca=Ford' -- (к примеру), он прекрасно работает, но я не знаю как это сделать. Заранее большое спасибо.

ответ

0

Это зависит от типа input.marcas. Я думаю, что вы хотите что-то вроде:

$('input.modelos').typeahead({ 
    name: 'modelos', 
    remote: './modelos.php?query=%QUERY&nombremarca=' + $('input.marcas').val() 
}); 

Если параметр оценивается в начале, то $ («input.marcas») Вал() будет казаться фиксированной, так что вы должны найти способ сделать. он вызывает функцию для получения результата.

Вся документация здесь, поэтому там будет что-то, что поможет вам.

https://github.com/twitter/typeahead.js

+0

Я пробовал это и не работал, возможно, мне следовало бы добавить больше кода: – teikuei

+0

Я видел документацию и не понял ничего, как я уже сказал, я новичок в этом и все, что у меня есть из примеров, которые делают более или менее то, что я хочу ...: p – teikuei

0

Ну у меня есть решение, может быть, не де лучший способ сделать это, но это работает:

function lanzarmarca() { 

     if (document.getElementById("var").value == 0) { 
      $('input.marcas').typeahead({ 
       name: 'marcas', 
       remote : './marcas.php?query=%QUERY' 
      }); 
      document.getElementById("marcas").focus(); 
     } 
     if (document.getElementById("var").value == 1) { 
      focus(); 
     } 
    } 

    function lanzarmodelo() { 
     $('input.modelos').typeahead({ 
      name: 'modelos', 
      remote : './modelos.php?query=%QUERY&nombremarca=' + $('input.marcas').val() 
     }); 
     document.getElementById("modelos").focus(); 
     document.getElementById("var").value=1; 

    } 

    function focus() { 
     if (document.getElementById("var").value == 1) { 
      document.getElementById("marcas").value = ""; 
      document.getElementById("var").value=0; 
      window.location.reload(); 
     } 
    } 

    function load() { 
      with (document.getElementById("marcas")) { 
       selectionStart = selectionEnd = value.length; 
       focus(); 
      } 
    } 


    </script> 
</head> 
<body onload="load()"> 

...

<tr> 
<td width="15%">Marca</td> 
<td width="43%"><input id="marcas" type="text" class="cajaGrande" name="marcas" size="20" class="marcas" placeholder="Introduce marca" onkeypress="lanzarmarca()"><input id="var" type="hidden" name="var" value="0"></td> 
</tr> 
<tr> 
<td width="15%">Modelo</td> 
<td width="43%"><input id="modelos" type="text" name="modelos" size="20" class="modelos" placeholder="Introduce Modelo" onkeypress="lanzarmodelo()"></td> 

Я попытался использовать onfocus вместо onkeypress, но скрипт typeahead ломается, или typeahead.destroy o input.marcas.val() reset с помощью "" ... но ничего из этого не работает.

Надеюсь, что это поможет или кто-то найдет лучший способ сделать это.

Спасибо большое за помощь Дэвид, это действительно помогает мне.

Смежные вопросы