2011-12-04 85 views
1

我們在來自數據庫的文本框中顯示一些文本。我們使用一個Js函數在文本框中設置此值。問題是來自DB的字符串是"My  Name"。在文本框中,它應該顯示爲"My Name",但它會顯示爲"My  Name"文本框顯示 

如何解決這個問題?

我對文本框HTML如下所示,

<input type="text" class="textfield" id="searchText"> 

注:不能更改從數據庫返回的值。 使用javascript-> java-> ORACLE從數據庫中提取值。

+0

如果您使用的是PHP,使用'html_entity_decode'時從數據庫中拉出來。 – MacMac

+0

謝謝,Dave Newton – Ramnath

回答

1
$("#searchText").val($("<div>").html(database.data).text()); 

這可以通過創建一個臨時元素並使用數據庫字符串填充它的.html()來工作。然後從該文件中提取原始.text()並傳遞到您的輸入元素。任何HTML實體都將被相應的字符替換。

這是一個醜陋的黑客。我強烈建議修改您的數據庫值。

1

如果您無法在服務器端對其進行修改,則需要在JavaScript中解碼該字符串。

var foo = Encoder.htmlDecode(stringValueFromDb); 

的問題是,如果DB預計值是HTML編碼,你需要做到這一點的地方,除非它已經發生的服務器端。

1

文本框無法理解HTML格式。你有沒有聽說過GIGO - 垃圾進出垃圾?確保數據庫保持正確的值。

其他黑客可能會使用字符串解析函數用空格替換 。

0

您使用什麼函數從數據庫中獲取信息?如果"My&nbsp; Name"在數據庫中,那麼您將不得不去除HTML標籤。

如果"My Name"在數據庫中,那麼您應該刪除像html_entity_decode這樣的函數。

+0

(a)沒有HTML標籤; (b)在前一種情況下應該使用'html_entity_decode',而不是後一種情況。 –

0

在分配值之前,您只需要執行htmldeDecode

function htmlDecode(value){ 
    return $('<div/>').html(value).text(); 
} 

$('#searchText').val(htmldeDecode('My&nbsp; Name')) 

如果你不想使用jQuery的方法,你可以找到一些定製htmlDecode方法一樣,

JavaScript html_entity_decode