输入val的jQuery对话框脚本

时间:2010-02-05 15:45:32

标签: javascript jquery jquery-ui dialog modal-dialog

我对jQuery对话框和处理脚本的方式有点问题。

在对话框html中,我有

<input id="test"> 

如果我这样做

<script type="text/javascript>
   $('#test').val("haha")
</script>
输入后

,它会显示出来。如果我将 放在 之前,它就不起作用了。 现在问题是我正在尝试使用单击触发器更改$('#test')的值,我不能!

   $('.testbutton').click(function() { 
          alert();      
          $('#test').val("haha");
    });

警报有效,初始的val替换有效,这意味着没有任何重复或缺失的输入区域。

现在的总脚本,不起作用:

<input type="button" class="testbutton" />
<input type="text" size="10" id="test" name="test" value="">

 $('#test').val("currentvalue"); // This works
       $('.testbutton').click(function() { 
              alert();      
              $('#test').val("haha");
        });

更新 关闭对话框然后重新打开对话框,在#test中显示正确的值。这可能是我想念的吗?

3 个答案:

答案 0 :(得分:2)

将您的jQuery代码放入$(document).ready(function () {...your code...})。这将使浏览器为您的页面创建DOM树后执行。否则javascript无法正确搜索/操作DOM元素。它看起来如下:

$(document).ready(function () {
    $('.testbutton').click(function() { 
          $('#test').val("haha");
    });
});

<强>更新

如果动态加载HTML代码,请使用live绑定事件处理程序:

$(document).ready(function () {
    $('.testbutton').live("click", function() { 
          $('#test').val("haha");
    });
});

答案 1 :(得分:0)

我想你应该将你的代码包装在$(function(){// code here})中;确保您的代码仅在DOM准备就绪时运行。

答案 2 :(得分:0)

问题最终成为测试中的#。由于某种原因,替换使用类标识符而不是id标识符。我想这是因为#将只替换一个实例,并且由于某些原因我还没有发现,对话框中有多个实例(或隐藏的实例)。

感谢你的所有建议!