Coldfusion удаляет ведущие нули в автозаполнении - PullRequest
2 голосов
/ 23 сентября 2011

Я только что натолкнулся на нежелательную «особенность» CF, которая включает в себя удаление начальных нулей из значений, возвращаемых к самовосстановленному вводу.Я думал, что смогу добавить какой-то символ к значениям и убрать их после возврата, но наткнулся на загадку.Я изменяю существующую функцию, которая выглядит следующим образом:

<cffunction name="lookupTailNumber" access="remote" returntype="Array" >
    <cfargument name="search" type="any" required="false" default="">
    <!--- Define variables --->
    <cfset var data="">
    <cfset var result=ArrayNew(1)>

    <!--- Do search --->
    <cfquery name="data">
        SELECT DISTINCT SERIAL_NUMBER AS list
        FROM aircraft_status
        WHERE SERIAL_NUMBER LIKE '%#trim(ARGUMENTS.search)#%'
        ORDER BY list
    </cfquery>

    <!--- Build result array --->
    <cfloop query="data">
        <cfset ArrayAppend(result, list)>
    </cfloop>

    <!--- And return it --->
    <cfreturn result>

</cffunction>

, которая возвращает ответ, который выглядит следующим образом:

[3001.0,1.00002E8,1.00002001E8,1.00002002E8,1.00002003E8,1.00002004E8]

или в формате JSON:

0 3001

1 100002000

2 100002001

3 100002002

4 100002003

, где во всех результатах были удалены начальные нулидалеко.Я попытался изменить запрос, добавив символ к каждому значению:

<cfquery name="data">
        SELECT DISTINCT (concat(' ', SERIAL_NUMBER)) AS list
        FROM aircraft_status
        WHERE SERIAL_NUMBER LIKE '%#trim(ARGUMENTS.search)#%'
        ORDER BY list
    </cfquery>

, который возвращает это:

[" 0000003001"," 0100002000"," 0100002001"," 0100002002"," 0100002003"," 0100002004"]

, так что вы думаете, что все было хорошо, верно?Проблема: при возврате ни одно из значений не отображается в поле автозаполнения !!!Я также попытался добавить разные символы, в том числе цифры, но не повезло.Глядя на элементы в yui-ac-bd div> ul, ни один из них не заполняется и не отображается.

Входные данные объявлены так:

<cfinput style = "width:300px;"
                     class = ""
                     type="text"
                     name="txtvalueFilter"
                     maxlength="15"
                     id="txtvalueFilter"
                     autosuggest="cfc:mycfcpath({cfautosuggestvalue})"
            />

Мысли?

1 Ответ

1 голос
/ 23 сентября 2011

Попробуйте добавить пробел, чтобы встроенный сериализатор JSON рассматривал его как строку вместо int в JSON.

Также убедитесь, что вы установили последние исправления для своей версии CF.

Интересно, нужно ли вам создать массив результатов?Что произойдет, если вы вернетесь data.list?или, может быть, вместо этого используйте ListToArray(valueList(data.list))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...