我有几个问题 - 选择引用表值时,将加载第一个select约束。
问题1 - 最后两个选择框名称-Constraint on应该具有来自第一个约束的克隆选项。但是不应该在前一个选择框中具有所选选项。怎么做?
问题2 - 我的选择框是在javascript调用时加载的,但我必须为此添加警报,为什么? 人口代码二选 -
function LoadSelects()
{
$("#columns2 option").each(function() {
$(this).remove();
});
$("#columns3 option").each(function() {
$(this).remove();
});
alert("i m called"); ///it does not load the selects if i remove this****why?
$("#columns option").clone().appendTo("#columns2");
$("#columns option").clone().appendTo("#columns3");
}
}
人口优先选择的控制器代码 -
def getColumns = {
def columns = GGWSchemaXref.executeQuery("select distinct p.columnname from GGWSchemaXref p where p.tablename=:table and p.dbname = 'IVR_GUARDIAN'",[table:params.tableCombo])
render(template:"selectTemplate", model: [ columnList: columns ])
}
GSP页面代码 -
<tr> <td>Reference Table:</td>
<td><g:select name="tableCombo"
noSelection="${['':message(code:'Select Table')]}"
from="${result}" value="${tableName }" onchange="${remoteFunction(action:'getColumns', update:'columns', params:'\'tableCombo=\' + this.value', OnComplete = 'LoadSelects();')}"/> </td></tr>
<tr id ="cons"><td nowrap>Constraint On:</td>
<td nowrap><g:select name="columns" from="[]" /></td>
<td nowrap>Constraint Value:</td>
<td nowrap><g:textField name="columnValue" value="${enterVal }" />
</tr>
<tr id ="cons2"><td nowrap>Constraint On:</td>
<td nowrap><g:select name="columns2" from="[]" /></td>
<td nowrap>Constraint Value:</td>
<td nowrap><g:textField name="columnValue2" value="${enterVal2 }" />
</tr>
<tr id ="cons3"><td nowrap>Constraint On:</td>
<td nowrap><g:select name="columns3" from="[]" /></td>
<td nowrap>Constraint Value:</td>
<td nowrap><g:textField name="columnValue3" value="${enterVal3 }" />
</tr>
问题3 - 我需要在搜索后保留所选和输入的值(回发后)。
请帮忙怎么做?
感谢
答案 0 :(得分:0)
AJAX中的第一个“A”用于“异步”。您需要在ajax
的成功回调中执行LoadSelects()
您可以将功能简化为:
function LoadSelects(){
$("#columns2, #columns3").html( $("#columns").html()).val('') ;
}
这会将选项从#columns
复制到其他两个选项中,并取消选中我认为是您要求的内容。
在上面的代码中使用$('select').val('')
将从选项
selected
属性
修改如果您选择的each
因使用多个具有相同ID的{1}}而导致问题,则ID必须是唯一的。如果是这种情况,则需要将代码重构为行内的遍历
编辑#2 AJAX成功
jQuery.ajax({
type: 'POST',
data: 'tableCombo=' + this.value,
url: '/GryphonMonitor/load/getColumns',
success: function(data, textStatus) {
/* this is callback when all data has been received*/
jQuery('#columns').html(data);
LoadSelects();
},
error: function(XMLHttpRequest, textStatus, errorThrown) {}
})