[英]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()似乎是固定的,因此您必須找到一種使其調用函數以獲取結果的方法。
所有文檔都在這里,所以那里會有什么可以幫助您的。
好吧,我有一個解決方案,也許並不是最好的方法,但是它可行:
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.