如何为即时创建的输入赋值

时间:2014-05-06 02:59:00

标签: jquery dom

我正在尝试更新输入字段的值,该输入字段是动态创建的DOM的一部分而没有成功。 有人可以告诉我我做错了什么。感谢。

HTML

<div class="hidden-institution-form hide">
    <form class="form-horizontal forms" role="form">
       <input type="text" id="code">
    </form>
</div>

JQUERY

//Create an empty Div and clone the content of .hidden-institution-form in it
var frm = $('<div class="institution-form" id="institution-form"/>').append($(".hidden-institution-form").clone());

//Remove the hide class
$(frm).find(".hidden-institution-form").removeClass("hide");

//Replace .hidden-institution-form with .instutition
$(frm).find(".hidden-institution-form").removeClass("hidden-institution-form").addClass("instutition");

//Locate the input field #code and change it value
$("#institution-form").find("#code").val('some value'); //This does not work

3 个答案:

答案 0 :(得分:4)

  

有人可以告诉我我做错了吗

您没有将创建的元素添加到DOM。

frm元素仅在本地范围内创建,而$("#institution-form")搜索DOM中的元素

答案 1 :(得分:0)

删除隐藏机构类后,您只需添加类&#34;机构&#34;所以下面的代码应该可以工作:

更新:在某些拼写错误中,您使用的方法已关闭。试试这个:

//Create an empty Div and clone the content of .hidden-institution-form in it

var frm = $('<div class="institution-form" id="institution-form"/>').append($(".hidden-institution-form").clone());

//Remove the hide class
$(".hidden-institution-form").removeClass("hide");

//Replace .hidden-institution-form with .instutition
$(".hidden-institution-form").removeClass("hidden-institution-form").addClass("institution");

//Locate the input field #code and change it value
$(".institution").find("#code").val('some value'); //This does not work

JSFIDDLE:http://jsfiddle.net/de7Hv/

答案 2 :(得分:0)

主要问题是您没有将新创建的元素添加到dom中。因此,当您执行id选择器#institution-form时,它将无法找到新元素。

我看到的另一个问题是,如果你创建了这个块的多个实例,那么将会有多个id为institution-form的元素,这将导致在找到正确的元素来设置值时出现问题。

因此,在您克隆或创建元素的多个insteances的地方,使用calsses insted so

<div class="hidden-institution-form hide">
    <form class="form-horizontal forms" role="form">
        <input type="text" class="code"/>
    </form>
</div>

然后

//Create an empty Div and clone the content of .hidden-institution-form in it
var frm = $('<div class="institution-form" />').append($(".hidden-institution-form").clone());

//Remove the hide class
$frm.find(".hidden-institution-form").removeClass("hide");

//Replace .hidden-institution-form with .instutition
$frm.find(".hidden-institution-form").removeClass("hidden-institution-form").addClass("instutition");

//Locate the input field #code and change it value
frm.find(".code").val('some value'); //This does not work