Search code examples
jqueryjqgridfree-jqgrid

Filter toolbar: data getting trimmed in free jqGrid


We have a data field that is padded to four characters..
For example, you could have "ABC ", or "DEFG". This data is used as value of a select dropdown in the filter toolbar.

When the filter is being built, the padding is getting trimmed; so "ABC " is now "ABC".. so the filtering at the middle tier fails.. "ABC" != "ABC "

I modified the jqgrid source to remove the trimming, is this safe? It fixes my issue, but I'm not clear if I'm creating more problems.

/* the format of element of the searching toolbar if ANOTHER
 * as the format of cells in the grid. So one can't use
 *     value = $.unformat.call($t, $elem, { colModel: cm }, iCol)
 * to get the value. Even the access to the value should be
 * $elem.val() instead of $elem.text() used in the common case of
 * formatter. So we have to make manual conversion of searching filed
 * used for integer/number/currency. The code will be duplicate */
if (cm.stype === "custom" && $.isFunction(searchoptions.custom_value) && $elem.length > 0 && $elem[0].nodeName.toUpperCase() === "SPAN") {
    v = searchoptions.custom_value.call($t, $elem.children(".customelement").first(), "get");
} else {
    //v = $.trim($elem.val());  // *** commented this out ***
    v = $elem.val();
    switch (cm.formatter) {
        case "integer":
            v = cutThousandsSeparator(v)
                    .replace(getFormaterOption("decimalSeparator", "number"), ".");
            if (v !== "") {
                // normalize the strings like "010.01" to "10"
                v = String(parseInt(v, 10));
            }
            break;
        case "number":
            v = cutThousandsSeparator(v)
                    .replace(getFormaterOption("decimalSeparator"), ".");
            if (v !== "") {
                // normalize the strings like "010.00" to "10"
                // and "010.12" to "10.12"
                v = String(parseFloat(v));
            }
            break;

Solution

  • Thank you very much for the bug report!

    It seems be a but, but one should skip $.trim better only in case of stype: "select". It will reduce side effects for other cases. I committed the changes to GitHub (see here).