Датайнит дает ноль - PullRequest
       1

Датайнит дает ноль

1 голос
/ 24 января 2012

Может кто-нибудь помочь мне понять, почему функция dataInit не имеет значения для поля. Я добавил следующее в столбец категорий в моей сетке.

dataInit: function (elem) 
{
var v = $(elem).val(); 
alert("In data init val is " + v);
 $(elem).trigger('change');
}

Я получаю нулевое значение в предупреждении, и функция триггера тоже не срабатывает.

Ответы [ 3 ]

1 голос
/ 12 апреля 2012

Если этот вопрос о editoptions и использовании данных сервера. У меня есть ответ. Это происходит потому, что ваши данные не локальные, а с сервера. Используя сервер (не локальные данные), браузер должен несколько раз загрузить элемент select и перейти к выбранному параметру, как в строке.

Итак, $(elem).val(); из dataInit равно нулю, потому что оно все еще равно нулю в то время, вам придется подождать около 100 мс (в моем случае).

Вот мой код, речь идет о загрузке провинций с включенными городами.

dataInit: function (elem) {
    $(elem).ready(loadCities);
},

Я создаю функцию loadCities Функция из определения jqgrid

function loadCities() {
    setTimeout('$.ajax({type: "GET",data: "",   url: "<?php echo base_url();?>index.php/cities/cities_select_options_by_prov_and_store/"+$("#province").val()+"/"+$("#id").val(), success: function(data){  $("#city").html(data);}})',100);
}

вот мой полный код

var gridStores = jQuery('#gridStores');
function loadCities() {
    setTimeout('$.ajax({type: "GET",data: "",   url: "<?php echo base_url();?>index.php/cities/cities_select_options_by_prov_and_store/"+$("#province").val()+"/"+$("#id").val(), success: function(data){  $("#city").html(data);}})',100);
}
var resetCitiesValues = function () {
                gridStores.setColProp('#city', { editoptions: { value: ':- Choose Province First -'} });
            };
gridStores.jqGrid({
    url:'<?php echo base_url();?>index.php/stores/stores_json',
    datatype: 'json',
    colNames:['ID','Name'],
    colModel:[
        {name:'id',index:'stores.id', hidden:true,editable:true},
        {name:'province',index: 'provinces.name', width:100,stype:'text',sorttype:'text',editable:true,editrules:{required:true},edittype:"select",editoptions:{dataUrl:'<?php echo base_url();?>index.php/provinces/provinces_select_options',
                dataInit: function (elem) {
                    $(elem).ready(loadCities);
                },
                dataEvents: [{type: 'change',fn: function(e) {$.ajax({type: "GET",data: "", url: "<?php echo base_url();?>index.php/cities/cities_select_options/"+$(this).val(), success: function(data){  $("#city").html(data);}})}}]}},
        {name:'city',index: 'cities.name', width:100,stype:'text',sorttype:'text',editable:true,editrules:{required:true},edittype:"select", editoptions:{ value: ':- Choose Province First -', defaultValue:'- Choose City -'}},
    ],
    width:'600',
    rownumbers: true,
    rownumWidth: 40,
    rowNum:10,
    rowList : [20,30,50],
    viewrecords: true,
    pager: '#pagerStores',
    sortname: 'stores.id',
    sortorder: "desc",
    searchOn:"false",
    editurl: "<?php echo base_url();?>index.php/stores/edit"

});
jQuery("#gridStores").jqGrid('navGrid','#pagerStores',
    {
        edit:true,
        add:true,
        del:true,
        search:false,
        refresh:true,
        recreateForm:true, 
        viewPagerButtons:false
    },
    {
        closeAfterEdit:true,
        closeAfterAdd:true,
        reloadAfterSubmit:true,
        editData: {<?php echo $this->security->get_csrf_token_name()?>: '<?php echo $this->security->get_csrf_hash() ?>'},
        recreateForm:true, 
        viewPagerButtons:false
    },
    {
        closeAfterEdit:true,
        closeAfterAdd:true,
        reloadAfterSubmit:true,
        editData: {<?php echo $this->security->get_csrf_token_name()?>: '<?php echo $this->security->get_csrf_hash() ?>'}
    }, 
    {

        delData: {<?php echo $this->security->get_csrf_token_name()?>: '<?php echo $this->security->get_csrf_hash() ?>'},
    }, 
    {
        caption: "Search",
        Find: "Find",
        Reset: "Reset",
        sopt  : ['eq', 'cn'],
        matchText: " match",
        rulesText: " rules",
        stringResult: true
    }
);
jQuery("#gridStores").jqGrid('filterToolbar',{stringResult: true,searchOnEnter : false});
1 голос
/ 16 февраля 2012

У меня тоже такая же проблема.Для этого: jqgrid неправильно выберите значения выпадающего списка в поле редактирования в dataInit и dataEvents v = $(elem).val(); и var v = parseInt($(e.target).val(), 10); верните мне ноль.Если я поставлю v правильные значения, все остальные будут работать нормально!

0 голосов
/ 16 августа 2013

Элемент теперь уже является объектом, поэтому JQuery не требуется для получения его свойств.

Просто используйте var v = elem.value;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...