簡體   English   中英

預先輸入,級聯,mysql

[英]Typeahead, cascade, 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”);

如果(isset($ _ REQUEST ['query'])){

$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”);

如果(isset($ _ REQUEST ['query'])){

$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' -- (例如),它可以正常工作,但我不知道該怎么做。 非常感謝。

這取決於input.marcas的類型。 我認為您想要類似的東西:

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

如果參數在開始時求值,則$('input.marcas')。val()似乎是固定的,因此您必須找到一種使其調用函數以獲取結果的方法。

所有文檔都在這里,所以那里會有什么可以幫助您的。

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

好吧,我有一個解決方案,也許並不是最好的方法,但是它可行:

    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()重置為“” ...,但是這種方法都無法正常工作。

希望對您有所幫助或有人找到更好的方法來執行此操作。

非常感謝您的幫助David,它真的幫助了我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM