我无法使用jQuery访问HTML Input元素的值,这个输入元素最初是在早期函数中使用.html()函数编写的。
这是我创建输入元素的代码 - 没有这个问题
<script type="text/javascript">
$(document).ready(function() {
$("#model").change(function()
{
$.post("../includes/_ajaxSpecs.php",{ model:$(this).val() } ,function(data)
{
var string = data;
var partsArray = string.split(',');
$("#comp_specs").fadeTo(200,0.1,function() //start fading the messagebox
{
//add message and change the class of the box and start fading
$(this).html(partsArray[0]+"<input style='width:12em;margin-left:5px;border:1px solid #CCC;' name='input1' id='input1' /><br />"+partsArray[1]+"<input style='width:12em;margin-left:5px;border:1px solid #CCC;' name='input2' id='input2' /><br />").addClass('jText').fadeTo(900,1);
});
});
});
});
</script>
现在我想获取#input1中的值,并使用以下代码将不同的输入框(#new_input)设置为该值:
<script type="text/javascript">
$(document).ready(function() {
$("#input1").change(function()
{
var text = $("#input1").val();
$("#new_input").val(text);
});
});
我不知道为什么我无法在#input1和#input2中访问这些值,即使我在最终的POST中看到它们很好? JQuery访问.html()函数编写的表单元素是否存在问题?我使用列出的第二个函数,并且知道这适用于标准表单元素...
更新:根据您的建议,这是我的更新代码,但仍然无法抓住它?
<script type="text/javascript">
$('#div1').on('change', '#input1', function() {
$("#input1").change(function() {
var text = $("#input1").val();
$("#new_input").val(text);
});
});
</script>
更新:已解决,谢谢@Dragon
答案 0 :(得分:3)
您在$(文档).ready上调用$(“#input1”)上的更改但尚未创建$(“#input1”)。使用jQuery's on() function将更改事件绑定到它,以便一旦它存在就会触发。
$(document).on("change", "#input1", function(event){
var text = $("#input1").val();
$("#new_input").val(text);
});
答案 1 :(得分:2)
不,发生的事情是你的jQuery代码在页面加载时被执行。此时,#input1和#new_input不存在。
你想要像
这样的东西$('#containingDiv').on('change', '#input1') function()
{
}
否则可能在写入字段后注册$('#input1')。change() - 可能是$('#model')末尾的回调。更改?
答案 2 :(得分:1)
像其他人指出的那样,你在创建之前将事件处理程序绑定到'#input1'元素。在创建后将其绑定,或者将其绑定到文档,并使用“#input1”作为上下文。或者,您可以将它绑定到任何足够长的父元素,以查看绑定处理程序并调用它的完整循环。
$(document).ready(function() {
$(document).on('change', "#input1", function()
{
var text = $("#input1").val();
$("#new_input").val(text);
});
});
这就是全部。有关详细信息,请http://api.jquery.com/on/