2011-12-19 74 views
1

我想在文本框旁邊顯示帶有%符號的文本框,但未顯示%,如何使其顯示?百分比符號不會出現

下面是我的代碼:

 var $weightText = $("<input type='text' id='txtWeightRow' maxlength='5' onkeypress='return isNumberKey(event)'/>").attr('name',$this.attr('name')) 
       .attr('value',$this.val()) 
+0

這不是你在jQuery中添加元素的方式。你的代碼正在做的是尋找一個文本框(帶有不正確的選擇器)併爲其添加一個名稱屬性。 – jb11 2011-12-19 02:42:10

+0

我確實想從另一個文本框中選擇詳細信息到這個文本框中 – BruceyBandit 2011-12-19 02:47:10

+0

@ jb11:'$(some_pile_of_html)'就好了,您可能需要'.append'(或類似的)來獲取它到DOM中,但這是一個另外一件事。 – 2011-12-19 02:51:23

回答

0

fine manual

如果將一個字符串作爲參數傳遞給$(),jQuery的檢查字符串是否它看起來像HTML(即,它具有<tag ... >某個字符串中)。如果不是,如上所述,字符串被解釋爲選擇器表達式。但是,如果該字符串看起來像一個HTML片段,那麼jQuery將嘗試按照HTML所描述的方式創建新的DOM元素。然後創建並返回一個引用這些元素的jQuery對象。

看起來像jQuery試圖找出什麼是在那個字符串,並沒有得到正確的。如果你try this(至少在WebKit瀏覽器):

console.log($("<input type='text' id='txtWeightRow'>%")); 
console.log($("<input type='text' id='txtWeightRow'>%<br>")); 

你會看到只有<input>中的第一個出來,但你會得到所有的三個第二。我會在jQuery中調用這個bug。

我認爲你必須做的兩個步驟,使其工作:

var $weightText = $("<input type='text' id='txtWeightRow'/>").attr('name', $this.attr('name')) 
//... 
$(whatever).append($weightText).append('%'); 

其中whatever呢,當然,取決於您正在試圖把<input>

2

要添加旁邊的文本框中%,你會想要做這樣的事情:

$('#txtWeightRow').after('%'); 
+0

我添加了一個額外的代碼我以前沒有放在我的問題 – BruceyBandit 2011-12-19 02:56:59

+0

它帶回一個錯誤,說明無法識別表達式'%' – BruceyBandit 2011-12-19 02:57:28

1
var $weightText = $("<input type='text' id='txtWeightRow'/>").attr('name',$this.attr('name')); 
$("#txtWeightRow").after('%'); 
+0

它回來了有一個錯誤,說明無法識別的表達'%' – BruceyBandit 2011-12-19 02:54:11

+0

我添加了一個額外的代碼,我以前沒有放在我的問題 – BruceyBandit 2011-12-19 02:56:40

0

如果你想選擇另一個文本框的值,你應該這樣做:

var txtValue = $('#wanted-textbox').val(); 
+0

它確定我已經得到它的工作方式,我已經做到了,謝謝你:) – BruceyBandit 2011-12-19 02:59:13

+0

我想你'重新誤解了這種情況。 var $ x = $(「」)'爲'','$('body')。append($ x)''創建一個新節點將該節點放在頁面上並出現''。 – 2011-12-19 03:04:03

+0

現在我明白了。最初沒有提到生成的節點會被添加,因此看起來完全錯誤 – jb11 2011-12-19 03:06:16