1

我确实有一个奇怪的问题。不知道是不是bug。我试图修复它并找到解决方法一段时间,但到目前为止没有任何效果。我希望有人能帮助我。预先感谢。

问题描述 在我的 select2 框中,我确实输入了一些字符,并且得到了匹配列表。删除 2 个或更多字符后,我选择匹配表单 de 列表。那一刻,页面卡住了。它已经失去了任何参考。唯一的解决方案是刷新整个页面。

ajax 调用工作正常,每次更改都会刷新 select2 框。按回车键执行 onchange 函数 (csjs)。所有函数似乎都可以工作,因为每个函数之后的调试消息都显示在我的 java 控制台中。

我的代码

                        <xp:scriptBlock id="scriptBlock3">
                            <xp:this.value><![CDATA[

                var executeOnServer = function ( eventId ) {

// must supply event handler id or we're outta here....

if (!arguments[0])

    return false;

// OPTIONAL - The Client Side ID that you want to partial refresh after executing the event handler
var refreshId = (arguments[1]) ? arguments[1] : "@none";
var form = (arguments[1]) ? XSP.findForm(arguments[1]) : dojo.query('form')[0];

// OPTIONAL - Options object containing onStart, onComplete and onError functions for the call to the

// handler and subsequent partial refresh

var options = (arguments[2]) ? arguments[2] : {};

// OPTIONAL - Value to submit in $$xspsubmitvalue. can be retrieved using context.getSubmittedValue()

var submitValue = (arguments[3]) ? arguments[3] : '';

// Set the ID in $$xspsubmitid of the event handler to execute

dojo.query('[name="$$xspsubmitid"]')[0].value = eventId;

dojo.query('[name="$$xspexecid"]')[0].value = "";

dojo.query('[name="$$xspsubmitscroll"]')[0].value = "0|0";

dojo.query('[name="$$xspsubmitvalue"]')[0].value = submitValue;

XSP._partialRefresh("post", form, refreshId, options);}

x$("#{id:inputTextNieuweStudent}")
.select2({
        placeholder: "Selecteer een student",
        minimumInputLength: 3,
        quietMillis: 750,
        width: '400px',            
        ajax: {
                url: "/Apps/FEZ/SBA.nsf/selecteerStudent.xsp",  
                dataType: 'json',
                data: function (term, page) {
                return {
                    q: term, // search term
                    page_limit: 10,
                    local : true
                };
            },
            results: function (data, page) { // parse the results into the format expected by Select2.
                return data;
            }
        }

})
.on("change", 
    function(e) {
        console.log("changed to " + e.val);
        executeOnServer("#{id:voegToeStudent}", "#{id:lijstStudentSelectie}", {});
    } 
);
   ]]></xp:this.value>
                        </xp:scriptBlock>
                        </xp:inputText>
4

0 回答 0