В EL обычно не применяется, но вместо этого используется только SpEL (Spring EL) (протестировано с 3.2.2.RELEASE на Tomcat 7). Я думаю, что стоит упомянуть об этом здесь, если кто-то ищет JSP и EL (но использует JSP с Spring).
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<spring:eval var="constant" expression="T(com.example.Constants).CONSTANT"/>
Это распространенная проблема с использованием плагинов для динамически добавленных элементов. Обычно требуется вызвать плагин для новых элементов после того, как они вставлены в DOM. Вместо того, чтобы дублировать один и тот же код для элементов начальной загрузки страницы и новых элементов, вы обычно можете создать простую вспомогательную функцию, которая использует родительский элемент в качестве основной ссылки и ищет только внутри этого элемента для элементов, к которым применяется плагин.
Важно: вы повторяете идентификаторы, когда клонируете новые строки, а идентификаторы должны быть уникальными на странице по определению. Следующий код меняет ваш идентификатор на класс, и вам нужно будет сделать то же самое в своей разметке.
var $table;
$(function() {
$table=$('#myTable');
var $existRow=$table.find('tr').eq(1);
/* bind to existing elements on page load*/
bindAutoComplete($existRow);
});
function addRow(){
var $row=$table.find('tr:last').clone(true);
var $input=$row.find('input').val("");
$table.append($row);
bindAutoComplete($row );
$input.focus();
}
function bindAutoComplete($row ){
/* use row as main element to save traversing back up from input*/
$row.find(".product_title").autocomplete(products, {
width: 380,
matchContains: "word",
formatItem: function(row) {
return row.title;
}
});
$row.find('.product_title').result(function(event, data) {
$row.find('.product_description').val(data.description);
});
}
Сообщение Charlietfl решило мою проблему, единственное изменение, которое я должен был сделать, заключалось в замене:
var $row=$table.find('tr:last').clone(true);
с
var $row=$table.find('tr:last').clone();
удалением true
.
Надеюсь, это поможет кому-то еще:)
Я думаю, проблема в том, что с clone()
вы клонируете элемент, у которого уже есть свойства автозаполнения, а затем автозаполнение не может добавить «снова» к новому элементу. Я думаю, вы не должны clone()
, вы должны использовать исходный HTML-код элемента и вставить его.
EDIT:
Как я его исправил:
autocomplete("destroy")
для исходного поля ввода, которое вы хотели бы клонировать. И не выполнять используйте clone(true)
, но вы можете использовать clone()