2011-12-19 75 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