Конфликт автозаполнения jqGrid и Firefox - PullRequest
1 голос
/ 08 апреля 2011

У меня есть jqGrid, построенный так, как показано в приведенном ниже коде:

function radio(value, options, rowObject){
    var radio = '<input type="radio" value=' + value + ' name="radioid" />';
    return radio;
}

function reloadOnEnter(){
    jQuery(':input[name=field1]').keyup(function(e){
        if(e.keyCode == 13){
            var fieldValue = jQuery(':input[name=field1]').attr('value');
            jQuery(':input[name=field1]').attr('value', fieldValue);
            jQuery("#listTable").jqGrid().trigger("reloadGrid");
        }
    });
}

    jQuery(function(){
    jQuery("#listTable").jqGrid({
    url: '$content.getURI("myURI")' + '?userId=$userId&pageNo=0&locale=' + '$locale',
    datatype: 'json',
    mtype: 'POST',
    colNames:['column1', 'column2', 'column3', 'column4', 'column5'],
    colModel :[
        {name:'name', index:'field', width:'8%', search:false, align:'center', formatter: radio, editable:false, sortable: false, resizable:false},
        {name:'name1', index:'field1', width:'23%', sortable: false, resizable:false},
        {name:'name2', index:'field2', width:'23%', sortable: false, resizable:false},
        {name:'name3', index:'field3', width:'23%', sortable: false, resizable:false},
        {name:'name4', index:'field4', width:'23%', sortable: false, resizable:false}
        ],
    width:'768',
    height: 500,
    pager: '#pagerDiv',
    gridview: true,
    rowNum: $rowNr,
    rowTotal: 500,
    sortorder: 'desc',
    viewrecords: true,
    loadComplete: loadCompleteHandler,
    ignoreCase: true
    });
});

jQuery(function(){
    jQuery("#listTable").jqGrid('filterToolbar',{
                        stringResult: true,
                        searchOnEnter: false });
});

Я начинаю набирать «он», и в окне автозаполнения отображается «Привет» (потому что я ранее набрал «Привет»).Я выбираю «привет» и нажимаю ввод, и все же «он» отправляется в запросе ajax.

Моя reloadOnEnter функция вызывается loadCompleteHandler.Интересно то, что когда я запрашиваю значение поля поиска (field1), это выбранное значение, но в запросе отправляется только введенное значение.Я хотел бы отправить выбранное значение.Как я могу добиться этого?

РЕДАКТИРОВАТЬ : loadCompleteHandler выглядит следующим образом:

function loadCompleteHandler(){
    reloadOnEnter();
    jQuery("#listTable").jqGrid('setGridHeight', Math.min(500,parseInt(jQuery(".ui-jqgrid-btable").css('height'))));
}

(я использую Apache Velocity в качестве движка шаблонов! Вот почемуУ меня есть переменные, такие как $variable в коде JavaScript!)

1 Ответ

0 голосов
/ 08 апреля 2011

К вашему основному вопросу: вы должны использовать функцию jQuery.val вместо jQuery.attr('value').

Многие другие вещи в вашем коде кажутся мне странными или неясными. Мне не понятно, как вы используете reloadOnEnter в loadCompleteHandler. Если было бы хорошо, если вы включили соответствующий фрагмент кода. Значение для url кажется мне тоже очень странным. Вы дополнительно используете searchOnEnter: false параметр filterToolbar, но в reloadOnEnter вы ждете клавишу «Ввод». Внутри тела if(e.keyCode == 13) вы получаете jQuery(':input[name=field1]').attr('value') и затем возвращаете то же значение обратно. Почему?

Возможно, вы могли бы немного больше описать в тексте вашего вопроса, что вы хотите архивировать с кодом?

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