【问题标题】:two cloned select box not loaded if i remove alert如果我删除警报,则不会加载两个克隆的选择框
【发布时间】:2012-03-27 20:39:20
【问题描述】:

我有几个问题- 选择引用表值时,会加载 select 的第一个约束。

ISSUE 1 - 最后两个选择框名称 -Constraint on 应该从第一个约束 on.clone 选项。但不应该在前一个选择框中有选择的选项。怎么办?

ISSUE 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>     

ISSUE 3-我需要在搜索后保留选择和输入的值(回发)。

请帮忙怎么做?

谢谢

【问题讨论】:

    标签: jquery grails postback gsp clonenode


    【解决方案1】:

    AJAX 中的第一个“A”表示“异步”。你需要在你的ajax成功回调中执行LoadSelects()

    您可以将函数简化为:

    function LoadSelects(){
    
        $("#columns2, #columns3").html( $("#columns").html()).val('') ;
    
     }
    

    这会将#columns 中的选项复制到其他两个选择中,并取消选择我相信这是您所要求的。

    在上面的代码中使用$('select').val('') 将从选项中删除selected 属性

    编辑 如果您用于选择的each 是由于有多个具有相同 ID 的 ID,您就会遇到问题,因为 ID 必须是唯一的。如果是这种情况,代码将需要重构为一行内的遍历

    EDIT #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) {}
    })
    

    【讨论】:

    • 感谢查理的回复。我是 jquery 的新手,你建议的 loadSelects() 只需一行代码就可以完成我想要的工作,太棒了!!。但仍然需要添加警报。您是什么意思“您需要在 ajax 的成功回调中执行 LoadSelects()”我尝试调用 onSuccess 但仍然是同样的问题。
    • 添加另一个关于 ajax 成功回调的 edt
    • 再次感谢。无论如何都设法得到它。不过看起来不太好。我在第一次选择单击时调用了 loadselect。但相关的其他问题是回发时所有选定的值都会丢失并重置为第一个选项。
    • 对不起,我错过了您的编辑 2.感谢您的宝贵时间。我的问题 1,2 已通过您的代码解决。仍在尝试在回发页面上获取所有值。
    猜你喜欢
    • 2022-11-08
    • 1970-01-01
    • 2010-10-19
    • 2016-01-20
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多