0

我在 visualforce 页面中有一个命令按钮,我需要添加 oncomplete 属性。

<apex:commandButton id="btnParticipant" value="Add Participant" action="{!addParticipant}" reRender="participantTable" />

我需要调用我定义的 jquery 方法并将表行作为我的参数传递。这是我的jQuery:

<script type="text/javascript"> 
    var j$ = jQuery.noConflict();

    j$(document).ready(function() {
        var dataRows = j$('tr.dataRow');

        dataRows.each(function(index, elem) {
            updateImages(elem);
        });

        j$("img[id$=':deleteImage']").on("click", function(event) {
            updateImages(j$(this).closest('tr'));
        });

        j$('[id$=btnParticipant]').on("click", function(event){
            var dataRows = j$('tr.dataRow');
            dataRows.each(function(index, elem) {
                updateImages(elem);
            });
        });

    });

    function updateImages(myRow) {  
        var rowInputs =  j$(myRow).find('input[type="text"]');
        var contact = (j$(rowInputs[0]).val()); 
        var user = (j$(rowInputs[1]).val());
        var account = (j$(rowInputs[2]).val());

        if (contact !== '') {
            j$(rowInputs[0].parentNode).find('img').show();
            j$(rowInputs[1].parentNode).find('img').hide();
            j$(rowInputs[2].parentNode).find('img').hide();
        }    
        else if (user !== '') {
            j$(rowInputs[0].parentNode).find('img').hide();
            j$(rowInputs[1].parentNode).find('img').show();
            j$(rowInputs[2].parentNode).find('img').hide();
        }
        else if (account !== '') {
            j$(rowInputs[0].parentNode).find('img').hide();
            j$(rowInputs[1].parentNode).find('img').hide();
            j$(rowInputs[2].parentNode).find('img').show();
        }
        if (account !== '' && contact !== '') {
            j$(rowInputs[0].parentNode).find('img').show();
            j$(rowInputs[1].parentNode).find('img').hide();
            j$(rowInputs[2].parentNode).find('img').hide();
        }
    }
</script>

特别是,我需要以某种方式使用 oncomplete 属性复制这部分代码:

var dataRows = j$('tr.dataRow');

        dataRows.each(function(index, elem) {
            updateImages(elem);
        });

基本上,上面的代码使用类名“datacell”获取每个表行,并循环遍历这些行并隐藏某些图像。

如何使用 commandButton 中的 oncomplete 属性调用此代码?

谢谢你的帮助。问候。

4

1 回答 1

0

我不确定我是否理解你的问题。如果我理解正确,它应该类似于

    <apex:commandButton id="btnParticipant" value="Add Participant"
 action="{!addParticipant}" reRender="participantTable" oncomplete="updateRows()"/>

j$(document).ready(function() {
   updateRows();     
});

function updateRows(){
       var dataRows = j$('tr.dataRow');

        dataRows.each(function(index, elem) {
            updateImages(elem);
        });

        j$("img[id$=':deleteImage']").on("click", function(event) {
            updateImages(j$(this).closest('tr'));
        });

        j$('[id$=btnParticipant]').on("click", function(event){
            var dataRows = j$('tr.dataRow');
            dataRows.each(function(index, elem) {
                updateImages(elem);
            });
        });
}
于 2013-08-19T06:21:58.733 回答