2011-03-23 37 views
0

我正在使用jqgrid中列的自定义格式化程序。如何克隆选择并设置选定的选项并将其作为字符串传回。 (作为jqgrid的自定义格式化程序的一部分)

代码:

function getCellContentForFormula(cellValue, opts, rowObject) { 
var splitResult = "FHLMC 30 YR"; 
var selectId = opts.colModel.name + ':' + rowObject.coupon+ ':' + 'substituteSelect'; 
    //  var $selectBnchmark = $('#productSelect').clone().attr("id",selectId).val(splitResult); 
var $selectBnchmark = $('#productSelect').clone().attr("id", selectId); 
$('#'+selectId+ ' option[value='+splitResult+']').attr('selected', 'selected'); 
var bnchMarkSelect = $('<span>').append($selectBnchmark).remove().html(); 
console.log(bnchMarkSelect); 
return '<br/>'+ bnchMarkSelect; 
    } 

上面的代码正确地创建下拉用的选项,但没有显示所选择的值。

CONSOLE.LOG输出:

<select id="valueOfCMPlusTwo:5:substituteSelect" class="prodSelect"> <option value="">-Select-</option><option value="FHLMC 15 YR">FHLMC 15 YR</option><option value="FHLMC 30 YR">FHLMC 30 YR</option></select> 
我有麻烦结合线3和4

,我需要像输出:

<select id="valueOfCMPlusTwo:5:substituteSelect" class="prodSelect"> <option value="">-Select-</option><option value="FHLMC 15 YR">FHLMC 15 YR</option><option value="FHLMC 30 YR" selected="selected">FHLMC 30 YR</option></select> 

请帮助。

+0

后来我需要使用jqgrid的customEdit,但现在我只想显示单元格中的html元素。 – silpa 2011-03-23 16:30:04

回答

1

它与自定义格式化程序一起工作,您应该只使用字符串而不使用和jQuery操作。例如,如果您有HTML代码段<select>“blabla”作为“id”,并且您想设置新的id,则可以使用字符串replace方法。以同样的方式,你可以重写你的自定义格式化程序。

您目前的代码非常慢。你应该明白,每个$("#myid")的操作速度越慢,你拥有的页面上的id越多。此外,您使用jQuery.clone还没有修复错误。所以我强烈建议你简化你的自定义格式化程序的代码,并在里面只使用字符串或RegExp操作。

+0

谢谢。我按照你的建议重写了。代码是巨大的张贴在这里。我所做的是,而不是克隆我使用.html()来获取选择的html。然后做字符串操作来设置新的ID和选定的值。 – silpa 2011-03-24 14:37:42

+0

@silpa:我很高兴听到,问题解决了。我希望你不要在自定义的格式化函数**中使用'$('#productSelect')。html()'**。自定义格式化程序将在列的所有单元格中调用,并且会使代码缓慢。如果您需要当前包含'$('#productSelect')。html()',您可以定义例如$('#productSelect')。change'事件处理程序并保存html代码('$('#productSelect ').html()')在自定义格式化程序中使用的变量中。可能你已经完成所有的方式或另一种方式。祝你好运! – Oleg 2011-03-24 15:02:56

相关问题