Hello,

I have a problem with an XForms Schema designer "app" that I am building
based on XSLTForms

I get an exception thrown that causes the view to freeze up. The problem
can be replicated here:

http://collinta.com.au/xsltforms/designer.xml

(Note: in FF minimize and maximise the window after it loads in, seems to
be FF bug)

You will see two repeats one on the left which is a list of schema elements
1 to 5 and one in the middle which shows the children of the specific
element selected on the left.

Its possible to select each of elements 1 to 5 no problems. But if you
select element 1, that contains a sequence of two elements a and b, and
then select any two items (order seems irrelevant) you should see the view
freeze up.

This occurs in Firefox 9.0.1 and IE 9.0.

In FF Error Console I see an error that occurs on line 5882 (marked by >>
below), namely "this.select.firstChild is null":

XsltForms_select.prototype.setValue = function(value) {
        if (!this.full && (!value || value === "")) {
                this.selectedOptions = [];
                if (this.select.firstChild.value !== "\xA0") {
                        var empty = this.select.options[0].cloneNode(true);
                        empty.value = "\xA0";
                        empty.text = "\xA0";
                        empty.id = "";
                        this.select.insertBefore(empty, this.select.options[0]);
                        this.select.selectedIndex = 0;
                }
        } else {
>>              if (!this.full && this.select.firstChild.value === "\xA0") {
                        this.select.removeChild(this.select.firstChild);
                }
                var vals = value? (this.multiple?
value.split(XsltForms_globals.valuesSeparator) : [value]) : [""];
                var list = this.full? (XsltForms_browser.isXhtml ?
this.element.getElementsByTagNameNS("http://www.w3.org/1999/xhtml";,
"input") : this.element.getElementsByTagName("input")) :
this.select.options;
                var well = true;
                for (var i = 0, len = vals.length; well && i < len; i++) {
                        var val = vals[i];
                        var found = false;
                        for (var j = 0, len1 = list.length; !found && j < len1; 
j++) {
                                if (list[j].value === val) {
                                        found = true;
                                }
                        }
                        well = found;
                }
                if (well || (this.multiple && !value)) {
                        if (this.outRange) {
                                this.outRange = false;
                                XsltForms_xmlevents.dispatch(this, 
"xforms-in-range");
                        }
                } else if ((!this.multiple || value) && !this.outRange) {
                        this.outRange = true;
                        XsltForms_xmlevents.dispatch(this, 
"xforms-out-of-range");
                }
                vals = this.multiple? vals : [vals[0]];
                var readonly = this.element.node.readonly;
                var item;
                if (this.full) {
                        for (var n = 0, len2 = list.length; n < len2; n++) {
                                item = list[n];
                                item.checked = 
XsltForms_browser.inArray(item.value, vals);
                        }
                } else {
                        this.selectedOptions = [];
                        for (var k = 0, len3 = list.length; k < len3; k++) {
                                item = list[k];
                                var b = XsltForms_browser.inArray(item.value, 
vals);
                                if (b) {
                                        this.selectedOptions.push(item);
                                }
                                try {
                                        item.selected = b;
                                } catch(e) {
                                }
                        }
                }
        }
};

Any help with this is greatly appreciated.

Steve Cameron
------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
Xsltforms-support mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xsltforms-support

Reply via email to