2013-05-28 13 views
1

我得到一個JavaScript錯誤在textarea字段中不是數字「NaN」。爲什麼我的Javascript代碼意外地說我的字符串值不是數字(NaN)?

我想從自動完成jqueryui中選擇一個字符串,並將選定的字段顯示到textarea中。 Json數組中的數值正確顯示,但字符串值顯示NaN。

這是我的JSON數組:

var financialClasses=[ 
       "abc", 
       "PQR", 
       "xyz" ]; 


// these are the functions for selecting multiple values in the autocomplete textbox 

function split(val) { return val.split(/,\s*/); } 

function extractLast(term) { return split(term).pop(); } 


// This function logs the selected field in the textarea 


function financialclasses_log(message) 
{ 
      $("#financialclasses-log") 
.append(message+", ").prependTo("#financialclasses-log"); } 


    $("#financialclasses")/* this function is required when selecting multiple values */ 
       .bind("keydown", function(event) { 
        if (event.keyCode === $.ui.keyCode.TAB && 
         $(this).data("ui-autocomplete").menu.active) { event.preventDefault(); } }) 

       .autocomplete({ 
        minLength: 0, 
        source: function(request, response) { 
         // delegate back to autocomplete, but extract the last term 
         response($.ui.autocomplete.filter(
          financialClasses, extractLast(request.term))); 
        }, 
        focus: function() { 
         // prevent value inserted on focus 
         return false; 
        }, 
        select: function(event, ui) { 

         financialclasses_log(ui.item ? 
          + ui.item.value: 
          "Nothing selected, input was " + this.value); 

         var terms = split(this.value); 
         // remove the current input 
         terms.pop(); 
         // add the selected item 
         terms.push(ui.item.value); 
         // add placeholder to get the comma-and-space at the end 
         terms.push(""); 
         this.value = terms.join(", "); 
         $(this).val(""); 
         return false; 
        } 
       }); 

// here is the html 




<div id="financialclass" class="autocomplete_divs" class="ui-widget"> 
       <fieldset style="padding:0px"> 
        <a href="addlist.jsp" style="float:right; margin-right:5px">Add List</a><br> 
        <label for="financialclasses"></label> 
        <input id="financialclasses" size="25"> 
        <br> 
        <textarea id="financialclasses-log" class="log" class="ui-widget-content"></textarea> 
        <legend title="Financial Classes"><b>Financial Classes</b></legend> 
       </fieldset> 
      </div> 

http://jsfiddle.net/pratik24/gEkWF/2/

回答

1

線:

+ ui.item.value 

使用一元+操作者強制轉換的值轉換成一個數字。嘗試將非數字字符串強制轉換爲數字將產生NaN

刪除從該行的+,你的代碼應該很好地工作:http://jsfiddle.net/gEkWF/6/

+0

哇,這工作。非常感謝,我現在感到很沮喪。 :-(, – patz

+0

不用擔心!正如Dijkstra所說:「如果調試是刪除錯誤的過程,那麼編程必須是將它們放入的過程。」 – apsillers

+0

關於textarea字段的另一個問題是,一旦我從textarea,然後再次嘗試從自動填充字段中選擇任何新字符串不顯示在textarea中。 – patz

相關問題