Если вы не хотите, чтобы пустые значения были отправлены, вы должны заполнить поле как требуется, добавив атрибут required
в поле ввода.
Вы можете добавить условие if, чтобы проверить, что значение не равно NULL, перед нажатием в массив, например:
if(i) {
// code to push to array
}
В качестве следующего -up:
Предыдущий код, показанный в этом сообщении, был в конечном итоге оставлен, поскольку он был ненадежным. Теперь я использую следующую функцию API для изменения размера сетки, как рекомендовано в документации jqGrid:
jQuery("#targetGrid").setGridWidth(width);
Для фактического изменения размера функция, реализующая следующую логику, привязана к событию изменения размера окна:
Вычислить ширину сетка с использованием его родительского clientWidth и (если он недоступен) его атрибута offsetWidth.
Выполните проверку работоспособности, чтобы убедиться, что ширина изменилась более чем на x пикселей (для решения некоторых проблем, связанных с приложением)
Наконец, используйте setGridWidth () для изменения сетки ' s width
Вот пример кода для изменения размера:
jQuery(window).bind('resize', function() {
// Get width of parent container
var width = jQuery(targetContainer).attr('clientWidth');
if (width == null || width < 1){
// For IE, revert to offsetWidth if necessary
width = jQuery(targetContainer).attr('offsetWidth');
}
width = width - 2; // Fudge factor to prevent horizontal scrollbars
if (width > 0 &&
// Only resize if new width exceeds a minimal threshold
// Fixes IE issue with in-place resizing when mousing-over frame bars
Math.abs(width - jQuery(targetGrid).width()) > 5)
{
jQuery(targetGrid).setGridWidth(width);
}
}).trigger('resize');
И пример разметки:
<div id="grid_container">
<table id="grid"></table>
<div id="grid_pgr"></div>
</div>
Borrowing from the code at your link you could try something like this:
$(window).bind('resize', function() {
// resize the datagrid to fit the page properly:
$('div.subject').children('div').each(function() {
$(this).width('auto');
$(this).find('table').width('100%');
});
});
This way you're binding directly to the window.onresize event, which actually looks like what you want from your question.
If your grid is set to 100% width though it should automatically expand when its container expands, unless there are some intricacies to the plugin you're using that I don't know about.
Автоматическое изменение размера:
Для jQgrid 3.5+
if (grid = $('.ui-jqgrid-btable:visible')) {
grid.each(function(index) {
gridId = $(this).attr('id');
gridParentWidth = $('#gbox_' + gridId).parent().width();
$('#' + gridId).setGridWidth(gridParentWidth);
});
}
Для jQgrid 3.4.x:
if (typeof $('table.scroll').setGridWidth == 'function') {
$('table.scroll').setGridWidth(100, true); //reset when grid is wider than container (div)
if (gridObj) {
} else {
$('#contentBox_content .grid_bdiv:reallyvisible').each(function(index) {
grid = $(this).children('table.scroll');
gridParentWidth = $(this).parent().width() – origami.grid.gridFromRight;
grid.setGridWidth(gridParentWidth, true);
});
}
}
Некоторое время уже использовал это в производственной среде без каких-либо жалоб (может потребоваться некоторая настройка, чтобы смотреть прямо на вашем сайте ... например, вычитая ширину боковая панель и т. д.)
$(window).bind('resize', function() {
$("#jqgrid").setGridWidth($(window).width());
}).trigger('resize');