jQuery向动态创建的输入文本字段添加值

3

我有一组由jQuery ajax动态创建的输入文本框,并需要填充某些字段的值。 我正在使用以下代码:

$('#priority').attr('value', tplData);

但似乎不起作用。

我尝试使用.val(tplData),但没有成功。

是否有一种不同的方式可以通过jQuery设置动态创建的字段的值?

输入字段的HTML如下:

<div class="field-container">
  <!-- This field is being dynamically created via an ajax call using jQuery -->
  <input type="text" name="priority" id="priority" class="input-group vert-spacer-bottom" placeholder="Priority">
</div>

提前致谢。

编辑 看起来肯定是与动态创建元素有关,因为如果我在HTML中静态创建输入元素并尝试这些建议,它就可以完美地工作。但如果输入字段是动态创建的,则不行。


2
是否存在具有相同ID的多个元素? - Arun P Johny
不,它们都是不同的。这里有个奇怪的部分。如果我将输入元素创建为静态HTML输入字段,则可以使其正常工作。非常完美。但是,如果我让jQuery在页面呈现后创建它,无论实现方法如何,都无法使其正常工作。 - Skittles
4个回答

2

尝试:

$('body').find('#priority').attr('value', tplData);

编辑:应该可以工作,不过你也可以这样做:

$('body').find('name=["priority"]').val(tplData);
$('body').find('#priority').val(tplData);

编辑:请在jsfiddle上查看


我尝试过了,但仍然不起作用。看起来是一个非常合理的建议。 - Skittles
这些都看起来很棒,但是都没有起作用。我使用Bootstrap库有关系吗? - Skittles
tplData的值是多少?请在此完整放置您的代码。我附上了您的问题的jsfiddle链接。 - Siamak Ferdos
这是由一个AJAX调用派生的。它通常是一个2到4个字符的字符串,例如“P1S2”或“P2”等。请阅读我在顶部的最新评论...谢谢。 - Skittles

0
首先,你的文本框是否在赋值之前生成?你可以在控制台选项卡中检查是否有任何错误。有时候,如果在你的代码之前发生了任何错误,它就不会触发。因此,请右键单击页面->检查元素->控制台。如果有任何错误,请解决它并重试。
你可以尝试像这样使用$('#priority').val(tplData)

是的,在尝试将值推送到字段之前,该字段已经生成。其次,请参阅我的原始帖子,因为我已经尝试了您建议的内容。 - Skittles

0
如果您有多个控件,则必须使用类。
$(".priority").prop("value",tplData);

检查控制台是否有任何错误。


0

所以,在我对着那道看似无解的代码墙不断敲打之后,我终于想出了一个完美解决方案!

现在,动态创建的文本框已经可以从我的jquery代码中接收到值的赋值。这个神奇的方法在于重新思考元素在jquery中的可见性问题。

首先要考虑的是容器DIV是静态的,并且始终存在于文档中。这意味着在该DIV中创建的任何内容都将严格限制为客户端。因此,我开始思考如何让jQuery意识到新创建的元素。以下代码实现了这一点:

var inputElm = '';
inputElm += '<input type="' + data.type + '" name="' + data.name + '" id="' + data.name + '" class="' + data.name + ' input-group vert-spacer-bottom" placeholder="' + data.placeholder + '" />';

$('.field-container').after().html(inputElm);

现在,当我执行代码时...它运行得很好,并将输入文本框的值设置为所需值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接