首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Typeahead、cascade、mysql

Typeahead、cascade、mysql
EN

Stack Overflow用户
提问于 2014-01-21 20:39:50
回答 2查看 294关注 0票数 0

很抱歉我的英语,但我需要一些帮助。我正在试着根据汽车的制造商和型号制作一个层叠的typeahead。这是我的代码(我使用的所有这些代码都来自于我从web上获得的示例,我是web编程的初学者。

nuevo_coche.php:...

代码语言:javascript
复制
.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:

include ("../conectar.php");

if (isset($_REQUEST‘’query‘)){

代码语言:javascript
复制
$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

include ("../conectar.php");

if (isset($_REQUEST‘’query‘)){

代码语言:javascript
复制
$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' -- (例如),它可以正常工作,但我不知道怎么做。在此之前非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2014-01-21 21:34:34

这取决于input.marcas的类型。我认为你需要这样的东西:

代码语言:javascript
复制
$('input.modelos').typeahead({
    name: 'modelos',
    remote: './modelos.php?query=%QUERY&nombremarca=' + $('input.marcas').val()
});

如果参数是在开始时计算的,那么$('input.marcas').val()看起来是固定的,所以你必须找到一种方法让它调用一个函数来获得结果。

所有的文档都在这里,所以里面会有一些东西可以帮助你。

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

票数 0
EN

Stack Overflow用户

发布于 2014-01-22 19:39:30

好吧,我有一个解决方案,也许不是最好的方法,但它是有效的:

代码语言:javascript
复制
    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()">

..。

代码语言:javascript
复制
<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() ...但是,这些都不能很好地工作。

希望它能帮上忙,或者有人能找到更好的方法来做这件事。

谢谢你的帮助,大卫,这对我真的很有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21258433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档