я получил полезный учебник, где, если вы введете «id» [или первую 1-2 букву вашего идентификатора], остальное поле формы будет заполнено автоматически, потянув данные из базы данных mysql. это произойдет, не нажимая клавишу ENTER! теперь, что я пытаюсь сделать, я буду вводить полный «id» и нажимать клавишу ENTER, чтобы заполнить остальную часть поля формы! какая модификация потребуется для этого кода ниже? вот мой файл index.html:
<html> <body> <script language="javascript" type="text/javascript"> function ajaxFunction(){ var http; // The variable that makes Ajax possible! try{ // Opera 8.0+, Firefox, Safari http = new XMLHttpRequest(); } catch (e){ // Internet Explorer Browsers try{ http = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ http = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ // Something went wrong alert("Your browser broke!"); return false; } } } var url = "getagentids.php?param="; var idValue = document.getElementById("agid").value; var myRandom = parseInt(Math.random()*99999999); // cache buster http.open("GET", "getagentids.php?param=" + escape(idValue) + "&rand=" + myRandom, true); http.onreadystatechange = handleHttpResponse; http.send(null); function handleHttpResponse() { if (http.readyState == 4) { results = http.responseText.split(","); document.getElementById('agfn').value = results[0]; document.getElementById('agsal').value = results[1]; document.getElementById('agtel').value = results[2]; document.getElementById('agid').value = results[3]; } } } </script> <form name="schform"> <table> <tr> <td>Contact ID:</td> <td><input id="agid" type="text" name="contactid" onKeyUp="ajaxFunction()"></td> </tr> <tr> <td>Tel Number:</td> <td><input id="agtel" type="text" name="contacttel"></td> </tr> <tr> <td>Name:</td> <td><input id="agfn" type="text" name="contactfullname"></td> </tr> <tr> <td>Salutation:</td> <td><input id="agsal" type="text" name="contactsalutation"></td> </tr> <tr> <td><input type="reset" value="Clear"></td> <td></td> </tr> </table> </form> </body> </html>
и вот мой файл getagentids.php:
<?php error_reporting(0); // turns off error reporting $con = mysql_connect("localhost", "root", ""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("contactdetail", $con); mysql_select_db("contactdetail"); $param=$_GET['param']; if (strlen($param) > 0) { $result = mysql_query("SELECT * FROM contact WHERE contactid LIKE '$param%'"); if (mysql_num_rows($result) == 1) { while ($myrow = mysql_fetch_array($result)) { $agentname = $myrow["contactfullname"]; $agenttel = $myrow["contacttel"]; $agentsal = $myrow["contactsalutation"]; $agentid = $myrow["contactid"]; $textout .= $agentid . ", " . $agentname . ", " . $agenttel . ", " . $agentsal; } } else { $textout = " , , ," . $param; } } echo $textout; ?>
Вы можете изменить свою ajaxFunction
как (просто вставьте код вверху вашего ajaxFunction
)
function ajaxFunction(e){ var e=e || window.event; var keycode=e.which || e.keyCode; if(keycode!==13 || (e.target||e.srcElement).value=='') return false; // rest of your code }
И измените свой onKeyUp
на это ( event
уведомления в аргументе)
<input id="agid" type="text" name="contactid" onKeyUp="ajaxFunction(event)">
Просто для идеи .
сначала создайте функцию javascript, чтобы определить, нажата ли клавиша Enter, и вызовите ajaxFunction
изнутри:
function run(e) { if (e.keyCode == 13) { ajaxFunction(); return false; //disable the default Enter behavior } return true; }
измените onKeyUp="ajaxFunction()"
в текстовом вводе Contact ID в onKeyUp="run()"