<form id="form1" runat="server">
    <input type="button" value="弹出" id="inside"  />
    <div id="Dialog" style="">
    <input type="text" id="text1"  value="" name="text1"/>
    <input type="text" id="text2" value="" />
     <input type="button" value="提交" onclick="sys()" />
     </div>
       
    <script type="text/javascript">
        $(document).ready(function () {
            //内嵌弹出层调用
            $('#inside').click(function () {
                $.webox({
                    height: 280,
                    width: 600,
                    bgvisibel: true,
                    title: '内嵌弹出层调用',
                    html: $("#Dialog").html()
                });
                
            });
          
        }) 
</script>
   <script type="text/javascript">
       function sys() {
           alert($("#text1").val());
       }
   </script>
    </form>
求大神解答,这个问题困扰了小弟很久了,刚接触jquery ,弹出的第三方窗口,输入文本框的值死活都获取不到.求解救方法.再此先谢过了.jqueryhtml

解决方案 »

  1.   

    首先要确认的是弹出框是否是使用了iframe.
    如果是使用了iframe那就与你取值的作用域分属不同的dom作用域。
    所以取不出来。
    查看是否使用了iframe可以通过浏览器自带的开发调试工具进行查看
      

  2.   


    没有使用iframe ,就是用的第三方弹出窗口插件调用当前页面这个层,代码贴上面一看就清楚了,如果text给了默认值就能取出来,但是就是取不到弹出层以后的值.
      

  3.   

    你先通过一些工具来查看一下调用这个代码后是否有dom元素改变。
      

  4.   

    而且这里也没看出来你的弹出层和你的text1这个控件有绑定关系
      

  5.   


     <script type="text/javascript">
            $(document).ready(function () {
                //内嵌弹出层调用
                $('#inside').click(function () {
                    $.webox({
                        height: 280,
                        width: 600,
                        bgvisibel: true,
                        title: '内嵌弹出层调用',
                        html: $("#Dialog").html()
                    });
                     
                });
               
            }) 
    </script>
    这段JS就是引用第三方弹出窗口调用我当前页面ID为 Dialog 的层,我调试了很多遍,发现当点击弹出按钮会调用 html: $("#Dialog").html()这个参数,就是获取弹出之前这个层里的代码,所以弹出之后在这个层里文本框输入值都获取不到.试过各种办法了.
      

  6.   

    我估计是这样的,弹出层会使用$("#Dialog").html()得到的html代码作为弹出层的innerHTML
    也就造成你的dom中出现了2个具有id=text1的元素。
    而jquery使用id选择器的时候只会匹配第一个匹配的元素。
    而你的inside控件在dialog这个层之前。
    所以jquery首先匹配到inside控件中的text1元素
    所以无论你怎么改变dialog中的text1的值
    也没有办法通过jquery取到了。
      

  7.   

    其实这个结论只要通过工具查看一下dom元素就可以得到。。
      

  8.   

    是啊,我知道为什么弹出窗中取不到文本框值,却能取到页面上的文本框的值,现在就是要找解决办法怎么才能取到弹出窗中文本框的值 - -
     
    <input type="text" id="text1"  value="" name="text1" class="test"/>
    $(".test")[1].value
      

  9.   

    是啊,我知道为什么弹出窗中取不到文本框值,却能取到页面上的文本框的值,现在就是要找解决办法怎么才能取到弹出窗中文本框的值 - -
     
    <input type="text" id="text1"  value="" name="text1" class="test"/>
    $(".test")[1].value

    这种写法还真能行呢,谢谢了啊,朋友.