#javascript #php #jquery #ajax #autocomplete
#javascript #php #jquery #ajax #автозаполнение
Вопрос:
У меня есть случайные поля для записей. Мне нужно автозаполнение с помощью java script и php, но когда я пытаюсь это сделать, автоматически заполняется только первое поле.
Мой код:
<script type="text/javascript">
$().ready(function() {
$(".name").keyup(function() {
$(".name").autocomplete("get_profile_list.php", {
width: 260,
matchContains: true,
selectFirst: true
});
});
});
</script>
<script type="text/javascript">
function track() {
var count = jQuery('.abc').length;
jQuery('#track1').append('<span id="track1" class="abc"><br><input type="text" name="name[]" id="name-' count '" class="name" value="" size="35"/><input type="text" name="qty[]" id="qty-' count '" value="" size="1" onchange="return track();" /><input type="text" name="price[]" id="price-' count '" value="" size="1"/></span>');
}
$('input').live("keypress", function(e) {
/* ENTER PRESSED*/
if (e.keyCode == 13) {
/* FOCUS ELEMENT */
var inputs = $(this).parents("form").eq(0).find(":input");
var idx = inputs.index(this);
if (idx == inputs.length - 1) {
inputs[0].select()
} else {
inputs[idx 1].focus(); // handles submit buttons
inputs[idx 1].select();
}
return false;
}
});
</script>
</head>
<body>
<?php date_default_timezone_set("Asia/Kolkata");?>
<form name="form" method="post">
Party Name : <input type="text" name="customer" size="30" />
Date and Time : <input type="hidden" name="edt" value="<?php echo date("d-m-Y h:i:s", time());?>"/><?php echo date("d-m-Y h:i:s", time());?>
<br><br>
<strong>Products Details</strong>
<div id="main">
<span id="track1" class="abc">
<input type="text" name="name[]" id="name-0" class="name" value="" size="35" /><input type="text" name="qty[]" id="qty-0" value="" size="1" onchange="return track();" /><input type="text" name="price[]" id="price-0" value="" size="1"/>
</span>
<div id="display">
</div>
</div>
<br><br>
Receiver Name<input type="text" name="receiver" /><br>
<input type="submit" name="submit" />
</form>
</body>
</html>
Например, пожалуйста, посетите http://computerdada.com/slip1.php
В первом поле ввода сведений о продукте — это название продукта, пожалуйста, протестируйте его, используя слова key, lan.
Спасибо.
Ответ №1:
Используйте .on()
вы добавляете элемент с классом name
динамически, поэтому элементы, которые не предварительно доступны в DOM ready, не получают привязанный к нему обработчик событий.
вам нужно делегировать событие, чтобы прикрепить обработчик события к родительскому элементу, присутствующему в DOM ready.
$(document).ready(function () {
$('#track1').on('keyup', '.name', function () {
$(this).autocomplete("get_profile_list.php", {
width: 260,
matchContains: true,
selectFirst: true
});
});
});
Обновлено после комментария OP.
Поскольку вы используете jQuery v1.3.2
итак, вы должны использовать .live()
$(document).ready(function () {
$('.name').live('keyup', function () {
$(this).autocomplete("get_profile_list.php", {
width: 260,
matchContains: true,
selectFirst: true
});
});
});
Комментарии:
1. извините, дорогой, это не работает. посетите computerdada.com/slip1.php здесь новый код
2. он работает, но новая проблема заключается в том, что при попытке выбрать из списка также происходит обновление записи
3. @SagarSaroha По какой проблеме я не могу с вами связаться??
4. пожалуйста, посетите computerdada.com/slip1.php и введите lan, затем попробуйте выбрать опцию 4 lan с помощью клавиш со стрелками вниз. он обновляет список, когда ключ свободен (keyup)
5. @SagarSaroha Попробуйте
change
вместоkeyup
.