如果我删除警报,两个克隆选择框未加载

时间:2012-03-27 20:39:20

标签: jquery grails postback gsp clonenode

enter image description here

我有几个问题 - 选择引用表值时,将加载第一个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 - 我需要在搜索后保留所选和输入的值(回发后)。

请帮忙怎么做?

感谢

1 个答案:

答案 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) {}
})