Знатоки ajax'а, подскажите пожалуйста как сделать следующее.
Есть страница ввода заказов (локальный сайт) с кучей инпутов.
Есть инпут "Фирма". Введа название фирмы, сотрудник может проверить наличие данных о ней и если они есть, то автоматом подтягивается адрес и телефон фирмы в соответственные инпуты.
Делается это через вот такой скрипт. Ниже код страницы ввода заказов и скрипта ajax.
insert.php
Свернутый текст
<?php
include("config.php");
$data = array();
$data [] = 'gotovnost';
$data [] = 'firma';
$data [] = 'adress';
$data [] = 'imya';
$data [] = 'tel';
$data [] = 'ves';
$data [] = 'kuda';
$data [] = 'oplata';
$data [] = 'primechaniya';
$data [] = 'prinyal';
$data [] = 'kurier';
$prioritet [] = 'prioritet';
$na_kogda [] = 'na_kogda';
$status [] = 'status';
if (isset($_POST['vvod'])) {
$gotovnost = $_POST['gotovnost'];
$prioritet = $_POST['prioritet'];
$firma = $_POST['firma'];
$adress = $_POST['adress'];
$imya = $_POST['imya'];
$tel = $_POST['tel'];
$ves = $_POST['ves'];
$kuda = $_POST['kuda'];
$oplata = $_POST['oplata'];
$primechaniya = $_POST['primechaniya'];
$primechaniya = str_replace("\n","<br>", $primechaniya);
$prinyal = $_POST['prinyal'];
$kurier = $_POST['kurier'];
$na_kogda = $_POST['na_kogda'];
$status = $_POST['status'];
if ($gotovnost != '' and $firma != '' and $adress != '' and $imya != '' and $tel != '' and $ves != '' and $kuda != '' and $oplata != '' and $prinyal != '' and $kurier != '' and $na_kogda != '') {
//отформатировал поле на когда
$date = explode("-", $_POST['na_kogda']);
$na_kogda = $date[2]."-".$date[1]."-".$date[0];
$add = mysql_query("INSERT INTO zakazy(na_kogda,gotovnost,prioritet,firma,adress,imya,tel,ves,kuda,oplata,primechaniya,prinyal,kurier ,status) VALUES ('$na_kogda','$gotovnost', '$prioritet','$firma','$adress','$imya','$tel','$ves','$kuda','$oplata','$primechaniya','$prinyal','$kurier','$status')");
header("Location: ".$_SERVER['REQUEST_URI']);
}
else
{
echo "<script language=javascript>alert('Вы заполнили не все поля');</script>";
//echo "Вы заполнили не все поля";
}
}
//v value na kogda <?=!empty($na_kogda)?$na_kogda:date('d-m-Y')?c>
?>
<html>
<HEAD>
<META http-equiv=content-type content=text/html; charset=UTF-8>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<style type="text/css">
</style>
<script type="text/javascript" src="java/jquery.js"></script>
<script type="text/javascript" src="java/jquery.maskedinput-1.2.2.js"></script>
<script type="text/javascript">
jQuery(function($) {
$.mask.definitions['~']='[+-]';
$('#na_kogda').mask('99-99-9999');
$('#phone').mask('(999) 999-99-99');
$('#product').mask('aaaaa-яяяяя-99999-*****');
});</script>
<script type="text/javascript">
<!--
function opfunk(deis){
value = $("#firma").val();
$.post("ajax.php",
{
act: deis,
what: value
},
function (result) {
try {
eval(result);
}
catch (e) {
alert(result);
}
});
return false;
}
//-->
</script>
<title>Новый заказ</title>
</HEAD>
<body>
<center>
<table width="100%" height="100%" cellspacing="0">
<?php
require("include/header_html.txt");
?>
<tr>
<td width="205px" valign="top" >
<?php
require("include/menu_html.txt");
?>
</td>
<td valign="top" width="100%">
<table width="100%" border="1" cellspacing="0">
<tr>
<td><div align="center">
<p><strong>Введите данные заказа</strong></p>
<p>Если поле "На когда" оставить пустым, то при первом нажатии "Ввести" будет подставлена текущая дата.</p>
<p>При втором нажати - данные будут сохранены</p>
</div></td>
</tr>
<tr>
<td><div align="center">
<p><strong><FONT color="green">Не стесняйтесь добавлять новых клиентов в базу. Зачем нам прочерки?</FONT></strong></p>
</div></td>
</tr>
</table>
<table width="100%" border="1" cellspacing="0">
<tr>
<td>
<form action="?" method="post" name="frt" >
<table align="center">
<tr><td class="t2">На когда</td>
<td> <input type="text" size="50" maxlength="10" name="na_kogda" id="na_kogda" value="<?php echo date('d-m-Y')?>"/><input type="checkbox" name="prioritet" value="1">Приоритет<br></td></tr>
<tr><td class="t2">Готовность заказа</td>
<td> <input type="text" size="50" maxlength="50" name="gotovnost" id="gotovnost"/></td></tr>
<tr><td class="t2">Фирма</td>
<td> <input type="text" size="50" maxlength="50" name="firma" id="firma"/><input type='button' value='Есть?' onclick="opfunk('prov');"></td></tr></td></tr>
<tr><td class="t2">Адрес</td>
<td> <input type="text" size="50" maxlength="100" name="adress" id="adress"/></td></tr>
<tr><td class="t2">Имя</td>
<td> <input type="text" size="50" maxlength="50" name="imya" id="imya"/></td></tr>
<tr><td class="t2">Телефон</td>
<td> <input type="text" size="50" maxlength="50" name="tel" id="tel"/></td></tr>
<tr><td class="t2">Вес</td>
<td> <input type="text" size="50" maxlength="50" name="ves" id="ves"/></td></tr>
<tr><td class="t2">Куда</td>
<td> <input type="text" size="50" maxlength="50" name="kuda" id="kuda"/></td></tr>
<!--<input type="text" size="50" maxlength="50" name="oplata1" id="oplata1"/>--!>
<tr><td class="t2">Оплата</td>
<td>
<input type="radio" name="oplata" value="Нал"> Наличный расчет<br>
<input type="radio" name="oplata" value="Безнал" checked> Безналичный расчет<br>
<input type="radio" name="oplata" value="Получатель"> Оплата получателем
</td></tr>
<tr><td class="t2">Примечания</td>
<td> <TEXTAREA type="text" NAME="primechaniya" id="primechaniya" ROWS=8 COLS=50></TEXTAREA> </td></tr>
<tr><td class="t2">Принял</td>
<td>
<table width="100%" border="0">
<tr>
<td> <input type="radio" name="prinyal" value="Надежда" checked> Надежда</td>
<td> <input type="radio" name="prinyal" value="Дима" > Дима</td>
<td> <input type="radio" name="prinyal" value="Катя" > Катя</td>
</tr>
<tr>
<td> <input type="radio" name="prinyal" value="Маша Б" > Маша Б</td>
<td> <input type="radio" name="prinyal" value="Маша Г" > Маша Г</td>
<td> <input type="radio" name="prinyal" value="Николай" > Николай</td>
</tr>
<tr>
<td> <input type="radio" name="prinyal" value="Оксана" > Оксана</td>
<td> <input type="radio" name="prinyal" value="Света" > Света</td>
<td> <input type="radio" name="prinyal" value="Юля" > Юля</td>
</tr>
<tr>
<td>-</td>
<td><input type="radio" name="prinyal" value="Маша М">Маша М</td>
<td>-</td>
</tr>
</table>
</td></tr>
<tr><td class="t2">Курьер</td>
<td> <SELECT NAME="kurier" id="kurier">
<?php
require("include/kuriers.txt");
?>
<OPTION value="Не указан" SELECTED>Не указан
</SELECT></td></tr>
<tr><td colspan="2" align="center"><input type="submit" name="vvod" value="Ввести"/>
<script type="text/javascript">
<?php
foreach ($data as $c)
{
if (isset($_POST[$c]))
{
?>
document.getElementById('<?=$c ?>'). value = '<?=$_POST[$c]?>';
<?
}
}
?>
</script>
</td></tr>
</table>
</form>
</td>
</tr>
</table></td>
</tr>
</table>
</center>
</body>
</html>
ajax.php
Свернутый текст
<?
$dbname= "dimex";
$dbuser= "root";
$dbpassword="753951";
$dbhost= "localhost";
$connect = mysql_connect($dbhost,$dbuser,$dbpassword);
@mysql_select_db($dbname,$connect);
// mysql_query("SET NAMES 'utf-8'");
// mysql_query("SET CHARACTER SET 'cp1251'");
$act = $_POST['act'];
$what = $_POST['what'];
$what=iconv("UTF-8", "utf-8", "".addslashes($what)."");
if($act == "prov"){
$firma = mysql_query("select * from clients where firma='".$what."'");
if(mysql_num_rows($firma) != 0) {
$firm = mysql_fetch_array($firma);
$js .="$('#adress').val('".$firm['adress']."');";
$js .="$('#tel').val('".$firm['tel']."');";
$js .="$('#oplata').val('".$firm['oplata']."');";
}
else {
$js .="alert('Нету. Добавьте клиента через форму добавления.');";
}
}
echo $js;
?>
Нужно чтоб при получении определенного значения "Оплата" (Нал, Безнал, Получатель") в форме автоматом менялось значение радио-инпута в нужное положение.
Значение oplata из ajax.php приходит (проверено в инпут-текст). А вот как сменить радио не знаю. Пытался нагуглить - тщетно.
Буду очень благодарен за вашу помощь.
П.С. Возможно невнятно описал все (я новичек). Если что - спрашивайте;)
Спустя 23 часа, 19 минут, 10 секунд (12.06.2012 - 10:54) DySprozin написал(а):
>Нужно чтоб при получении определенного значения "Оплата"
при получении _откуда_? (;
при получении _откуда_? (;
Спустя 1 час, 5 минут, 41 секунда (12.06.2012 - 11:59) WisesT написал(а):
из ajax.php приходят эти данные.
в инпут-текст подставляется без проблем. А вот как заставить смениться радио - не знаю.
в инпут-текст подставляется без проблем. А вот как заставить смениться радио - не знаю.
Спустя 37 минут, 2 секунды (12.06.2012 - 12:36) DySprozin написал(а):
WisesT
как вариант, присвой каждому radio свой id (предположим, id="opl1", "opl2", "opl3"....).
потом по условию вроде такого:
можно оптимизировать, но это уже сам разберешься (;
как вариант, присвой каждому radio свой id (предположим, id="opl1", "opl2", "opl3"....).
потом по условию вроде такого:
...
if ($firm['oplata'] == 'Нал') {
$js .= "$('#opl1').attr('checked', 'checked')" .
"$('#opl2').attr('checked', '')" .
"$('#opl2').attr('checked', '')";
}
...
можно оптимизировать, но это уже сам разберешься (;
Спустя 2 часа, 32 минуты, 49 секунд (12.06.2012 - 15:09) WisesT написал(а):
<?
$dbname= "dimex";
$dbuser= "root";
$dbpassword="753951";
$dbhost= "localhost";
$connect = mysql_connect($dbhost,$dbuser,$dbpassword);
@mysql_select_db($dbname,$connect);
// mysql_query("SET NAMES 'utf-8'");
// mysql_query("SET CHARACTER SET 'cp1251'");
$act = $_POST['act'];
$what = $_POST['what'];
$what=iconv("UTF-8", "utf-8", "".addslashes($what)."");
if($act == "prov"){
$firma = mysql_query("select * from clients where firma='".$what."'");
if(mysql_num_rows($firma) != 0) {
$firm = mysql_fetch_array($firma);
$js .="$('#adress').val('".$firm['adress']."');";
$js .="$('#tel').val('".$firm['tel']."');";
if ($firm['oplata'] == 'Нал') {
$js .= "$('#opl1').attr('checked', 'checked')" .
"$('#opl2').attr('checked', '')" .
"$('#opl3').attr('checked', '')";
}
if ($firm['oplata'] == 'Безнал') {
$js .= "$('#opl1').attr('checked', '')" .
"$('#opl2').attr('checked', 'checked')" .
"$('#opl3').attr('checked', '')";
}
if ($firm['oplata'] == 'Получателем') {
$js .= "$('#opl1').attr('checked', '')" .
"$('#opl2').attr('checked', '')" .
"$('#opl3').attr('checked', 'checked')";
}
}
else {
$js .="alert('Нету. Добавьте клиента через форму добавления.');";
}
}
echo $js;
?>
Так что-ли?
Спустя 6 минут, 34 секунды (12.06.2012 - 15:16) DySprozin написал(а):
WisesT
похоже (;
похоже (;
Спустя 12 секунд (12.06.2012 - 15:16) WisesT написал(а):
Выскакивает окно JS с сообщением
Цитата |
$('#adress').val('Заболотного, 158');$('#tel').val('050-355-08-08');$('#opl1').attr('checked', '')$('#opl2').attr('checked', 'checked')$('#opl3').attr('checked', '') |
Благо хоть меняется в этом сообщении так как нужно. я про checked
Спустя 5 минут, 52 секунды (12.06.2012 - 15:22) DySprozin написал(а):
WisesT
елки-палки (; мну ";" расставить забыл))
ты основную логику смотри (;
елки-палки (; мну ";" расставить забыл))
$js .= "$('#opl1').attr('checked', '');\r\n" .
"$('#opl2').attr('checked', 'checked');\r\n" .
"$('#opl2').attr('checked', '');\r\n";
ты основную логику смотри (;
Спустя 34 секунды (12.06.2012 - 15:22) WisesT написал(а):
Нашел ошибку с opl1 opl2 и опять opl2 (было). Поправил, но всеравно выдает вышеуказанное сообщение (тоже его поправил)
Спустя 40 секунд (12.06.2012 - 15:23) WisesT написал(а):
Щас посмотрю)
Спустя 4 минуты, 41 секунда (12.06.2012 - 15:28) WisesT написал(а):
ЮХУУУУУ!!!! Работает ! Спасибо тебе огроменно!
Спустя 1 час, 42 минуты, 22 секунды (12.06.2012 - 17:10) DySprozin написал(а):
WisesT
всегда рад помочь (;
всегда рад помочь (;