Автоотправка формы
Здравствуйте! В JS совсем недавно(( Не знаю как реализовать автоотправку формы с проверкой.
Задача: - при загрузке страницы фокус на первое поле ввода; - автоотправка первого поля, если введено 8 цифр; - в случае успешности заполнения первого поля, переключение фокуса на 2е; - автоотправка второго поля, если введено 8 цифр; Зараннее благодарен! |
<div style="padding-top:50px;">
<h3>Выдать книгу</h3>
<form action="" method="post" >
<table border="1" class="menu-main">
<tr>
<td style="text-align: center; width: 100px">Читатель</td>
<td><input type="text" style="width: 100px" name="reader_barcode" id="reader_barcode"></td>
<td style="width: 300px"><?if(isset($readers))
{?>
<?foreach($readers as $reader)
{?>
<br>Фамилия: <?echo $reader->user_last_name;?></br>
<br>Имя: <?echo $reader->user_first_name;?></br>
<br>Отчество: <?echo $reader->user_patronymic;?></br>
<?}?> <?}?>
</td>
</tr>
</form>
<form action="" method="post" id='find_book'>
<tr>
<td style="text-align: center" style="width: 100px">Книга</td>
<td><input type="text" style="width: 100px" name="book_barcode"></td>
<td style="width: 300px"><?if(isset($books))
{?>
<?foreach($books as $book)
{?>
<br>Фамилия: <?echo $book->author_last_name;?></br>
<br>Имя: <?echo $book->author_first_name;?></br>
<br>Название: <?echo $book->content;?></br>
<?}?> <?}?>
</td>
</tr>
<tr>
<td colspan="3"><input type="submit" id="find_reader" style="width:100%; height:50px;" value="Выдать" name="givebookbtn"></td>
</tr>
</table>
</form>
</div>
|
Цитата:
|
Lobezki,
<input type="text" id="input1" value="" maxlength="8">
<input type="text" id="input2" value="" maxlength="8">
<script>
var x = document.getElementById('input1');
var y = document.getElementById('input2');
x.focus();
x.onkeyup = x.onpaste = y.onkeyup = y.onpaste = function(){
var z = this;
setTimeout(function(){
z.value = z.value.replace(/[^\d]/g, '');
if (z.value.length == 8) {
y.focus();
// AJAX запрос
}
}, 0);
};
</script>
|
Rise, спасибо! Но возникает ошибка в консоле Хрома:
Uncaught TypeError: Cannot set property 'onpaste' of null Только забыл уточнить немаловажную деталь. После отправки штрих-кода через ajax-запрос, БД ищет в таблице строчку с соответствующим значением штрих-кода и на этой же странице должен отобразиться результат в полях: <br>Фамилия: <?echo $reader->user_last_name;?></br> <br>Имя: <?echo $reader->user_first_name;?></br> <br>Отчество: <?echo $reader->user_patronymic;?></br> Запрос ajax написал такой:
function sendreaderinfo() { type:'post', url:'ajax/reader',
data: "reader_barcode" + reader_barcode,
dataType: "json", response:'text', success:function (data) { if(data.result) { document.getElementById('пока еще не создал') = result; }
}
};
Action в Ajax.php выглядит так:
public function action_reader()
{
$reader_barcode = Arr::get($_POST, 'reader_barcode', '');
$data['readers'] = ORM::factory('Adduser')
->where('user_barcode', '=', $reader_barcode)
->find_all();
echo json_encode(array('result' => $data));
}
P.S. Через контроллер PHP без javascript'a всё рабоатет отлично. Но это при нажатии на кнопку вручную(((( |
Rise,
глянул. Ошибка перестала вылетать, но на странице не происходит ничего. Даже не пойму на каком этапе что делаю не так. То ли результат из БД не приходит, то ли я не знаю что. |
<script type="text/javascript">
function runajax()
{
var reader_barcode = $("#reader_barcode");
$.ajax({
type: "POST",
data: "reader_barcode=" + reader_barcode,
url: "ajax/finduser",
dataType: "json",
success: function(data)
{
var temp = data.user_last_name;
$("#reader_last_name").text(temp);
}
})
}
$(document).ready(function(){
$("#sendAjax").click(runajax);
});
</script>
<form action="" method="post" > <table border="1" class="menu-main"> <tr> <td style="text-align: center; width: 100px">Читатель</td> <td><input type="text" style="width: 100px" name="reader_barcode" id="reader_barcode" maxlength="8"></td> <td style="width: 300px"> <br>Фамилия: <div id="reader_last_name"></div></br> <br>Имя: </br> <br>Отчество: </br> </td> <td colspan="3"><input type="submit" style="width:100%; height:50px;" value="Выдать" name="userbtn" id="sendAjax"></td> </tr> </form>
public function action_finduser()
{
$reader_barcode = Arr::get($_POST, 'reader_barcode', '');
$data = ORM::factory('Adduser')
->where('user_barcode', '=', $reader_barcode)
->find_all();
echo json_encode($data);
}
P.S. Запрос в самой кохане в ajax.php правильный, работает. |
| Часовой пояс GMT +3, время: 01:55. |