jQuery';s.val()在Facebox中不工作

jQuery';s.val()在Facebox中不工作,jquery,facebox,Jquery,Facebox,我正在我的一个网站上使用Facebox()。我还在网站上广泛使用jQuery 我的问题是.val()函数在facebox中似乎不起作用。现在,这是显示为facebox的DIV: <div id="edit-tags" style="display: none;"> <script type="text/javascript"> $('.add-tag-form').submit(function(){ alert($('input.tags-inp

我正在我的一个网站上使用Facebox()。我还在网站上广泛使用jQuery

我的问题是.val()函数在facebox中似乎不起作用。现在,这是显示为facebox的DIV:

<div id="edit-tags" style="display: none;">
  <script type="text/javascript">   
   $('.add-tag-form').submit(function(){
    alert($('input.tags-input').val());
    return false;
   });
  </script>

  <form class="add-tag-form">
   <input type="text" name="tags-input" class="tags-input" />
   <input type="submit" class="small-button" value="Add Tag" />
  <form>
</div>
然后,无论我是否更改值,警报框都会显示“某个值”


我完全被困在这里了。代码中相同位置的
.val()
可以与facebox外部的文本框配合使用。

您需要将代码包装在一个匿名函数中,如

$(function() { ... });
       or
$(document).ready(function() { ... });
也许这有帮助

$(function() {
   $('.add-tag-form').submit(function(){
      alert($('input.tags-input').val());
      return false;
   });
});

请告诉我问题是否仍然存在

问题是当javascript代码运行时,文档尚未加载。当您运行$('.add tag form')时,jquery会查找并没有找到任何与查询匹配的元素,因此不会发生任何事情

要解决这个问题,请按照Avinash所说的做,并告诉jQuery在文档准备就绪时运行代码。我通常是这样做的:

$(document).ready(function(){
    ...
});
另外,为了安全起见,我还喜欢包装我的函数并使用jquery调用它们,如下所示:

(function ($){
   $(document).ready(function() {
       ...
   });
})(jQuery);

这样,如果有人覆盖$name,脚本仍然有效,我仍然可以使用$shortcut。

转到facebox.js第254行更改
$.facebox.discover($(target.clone().show(),klass)
$.facebox.discover($(target.show(),klass) Facebox正在克隆您提供的div,而不是实际显示它。调用.val()时,它将返回原始div的值,但修改后的div(用户与之交互)实际上是一个克隆的div

我也有同样的问题。在我修复了它之后,其他一些东西坏了(facebox将只加载div一次,当它关闭时,似乎什么都不起作用)

正如Ngo Minh Nam所指出的,facebox 将复制原始版本 div,那么你在读首字母 输入字段的值

这是我(丑陋的)解决办法 事情是这样的:

$('#input_field_id').live('keyup', function() {
  $('#input_field_id').val($(this).val());
});
这将更新输入字段 每次钥匙被压在里面 值框

更新:忘了它吧!只需将#facebox附加到要读取的元素的id之前。在我的例子中:

$('#facebox #input_field_id').val();
还请注意,您必须将这些线包装在

    $(document).bind('reveal.facebox', function() { 

从最后一天开始我就被困在那里了。在我的例子中,facebox.js显示在243号链接-> $.facebox.reveal($(target.html(),klass),我将其更改为 $.facebox.reveal($(target.show(),klass)
它是有效的。感谢以上所有帖子

最后,我想更新这篇帖子,我用lightbox代替facebox来解决我的facebox表单提交问题,第一次尝试就成功了。lightbox比facbox有更多的选项,输出效果更好

实际上选择器工作得很好$('.add tag form').submit(函数(){alert(“hello world”);return false;})$('.add tag form').submit(函数(){$($input.tags input”).hide();返回false;});这些很好用。。.val()不起作用。
    $(document).bind('reveal.facebox', function() {