Я вернусь через систему нумерации документов в Интернете с нескольких недель назад. Чтобы подвести итог, пользователь вводит в проект, номер класса, базы и тире (PPP-CCC-BBBB-DDD), затем он добавляется в базу данных mysql. Теперь большинство номеров doc идут по порядку в соответствии с изменениями. IE: Документ 1465-630-0001-000 становится, после пересмотра, 1465-630-0002-000.
Босс хочет, чтобы система автоматически заполняла введенное текстовое поле для базового номера, если оно обнаруживает, что пользователь вводит пересмотренный документ. Поэтому, если пользователь вводит в поле 1465 в поле проекта и 630 в поле класса, система должна автозаполнять базовое поле следующим доступным числом. В предыдущем примере это было бы 0002.
Он должен иметь возможность искать базу данных для первых двух полей, чтобы он мог найти следующий доступный. Есть ли способ сделать это с помощью javascript или что-то еще? SO был действительно полезен с моим последним вопросом javascript, относящимся к этой системе.
Вот немного моего кода, если это помогает:
`? >
<div id='preview'></div>
<form id='item' action="submit.php?item=1" method="post">
Enter Title:<input type="text" name="title" size="20"><BR>
Choose Project Code:
<SELECT NAME="project">
<OPTION VALUE="">Project...
<?
$query = "SELECT * FROM project ORDER BY project asc";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
$num = ($row['project']);
$name = ($row['description']);
?>
<OPTION VALUE="<?=$num?>" ><? echo"{$num}" . " | " . "{$name}";?>
<?
}
?>
</SELECT><BR>
Choose Class Code:
<SELECT NAME="class">
<OPTION VALUE="">Class...
<?
$query = "SELECT * FROM class ORDER BY class asc";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
$num = ($row['class']);
$name = ($row['description']);
?>
<OPTION VALUE="<?=$num?>" ><? echo"{$num}" . " | " . "{$name}";?>
<?
}
?>
</SELECT><BR>
Assigned Base Number:<input type="text" name="base" size="20"><BR>
Enter Dash Number:<input type="text" name="dash" size="20"><BR>
Enter Comments:<input type="text" name="comment" size="40"><BR>
<input type="hidden" name="item" value="1"/> `
Просто простая форма ввода html/php с списком кода проекта и класса, сгенерированным из базы данных, относящейся к каждому.
Спасибо за любую помощь-Thomas
Update:
Таким образом, вам понадобится сделать вызов AJAX (см. Пример в моем комментарии ниже) к некоторому PHP script, который будет извлекать базовое значение, которое вы хотите, а затем возвращает его в запрос AJAX. Как только запрос получит ответ, вы можете использовать эти данные, чтобы заполнить значение, как я изначально сказал...
На стороне примечания, так как пример, который я вам дал, представляет собой функцию jQuery AJAX, вы должны, вероятно, проверить, как использовать jQuery для выбора элементов на странице, вместо использования прямого JS.
например. для получения по ID и замены значения:
$("#base").attr('value', valueFromAjaxCall);
Как изменить значение с помощью JS:
Если вы используете PHP для получения базового значения, которое хотите заполнить в поле, вы можете заполнить его значением:
var baseField = document.getElementsByName("base")[0];
baseField.value = <?=$baseValue?>;
Вызов getElementsByName()
возвращает массив, поэтому вам нужно индексировать нужное поле. Я хотел бы предложить указать <input>
идентификатор, чтобы вы могли использовать document.getElementById()
. Вы бы сделали что-то вроде:
<input type="text" id="base" size="20">
и JS для получения входного элемента будет:
var baseField = document.getElementById("base");
... поэтому нет необходимости индексировать, если вы назвали любые поля с тем же именем.
** Не уверен в синтаксисе PHP.
Ajax-вызов фокуса 3-го поля, возвращающего серверу значения первых двух полей?
во-первых, вы, вероятно, захотите использовать jQuery, поскольку он имеет большую поддержку, прост в использовании и будет хорошо знаком с тем, кто использует PHP.
поэтому включите javascript-код jQuery, который вы можете получить: http://jquery.com/
тогда возьмите форму, которая выглядит так:
{form}
<input type=text id='major' name='major' value=''>
{Or a select, your choice}
<input type=text id='minor' name='minor'>
{or a select again}
<input type=text id='sequence' name='sequence' onFocus='getNextSequence()'>
...
{/form}
в вашей голове, у вас есть javascript:
function getNextSequence(){
var major=$('#major').val();
var minor=$('#minor').val();
if(!major){
alert('Select a major version#');
$('#major').focus();
return(false);
}
if(!minor){
alert('Select a minor version#');
$('#minor').focus();
return(false);
}
$.getJSON('http://url.to.getnextNumber.php',
{major:major,minor:minor},
function(data){
if(!data.error){
$('sequence').val(data.nextSequence);
}else{
alert(data.error);
}
}
});
}
вызов jQuery getJSON перезвонит вашему URL с двумя переменными $_POST
, основными и второстепенными. сделайте свой запрос, сохраните результат как $result=array('nextSequence'=>$x,'error'=>'false');
и преобразовать его в JSON с помощью echo json_encode ($ result);
не включайте ЛЮБЫЕ заголовки или любой другой контент в выходном файле этого файла, а jQuery будет вытаскивать правильное значение и вставлять его там, где он должен был спать