zoukankan      html  css  js  c++  java
  • JQuery UI dialog 服务器控件事件 问题(转)

    在1.8.5.中appendTo(document.forms[0])测试通过

    (转)

    Jquery UI 库中的 Dialog 控件里如果存在表单,是无法直接提交到服务器的,因为在jquery.ui.dialog.js文件中(1.8.2版本中大概是在59行的位置)有这样的代码:
    uiDialog = (self.uiDialog = $(''))
    .appendTo(document.body)
    .hide()
    .addClass(uiDialogClasses + options.dialogClass)
    .css({
    zIndex: options.zIndex
    })
    // setting tabIndex makes the div focusable
    // setting outline to 0 prevents a border on focus in Mozilla
    .attr('tabIndex', -1).css('outline', 0).keydown(function(event) {
    if (options.closeOnEscape && event.keyCode &&
    event.keyCode === $.ui.keyCode.ESCAPE) {

    self.close(event);
    event.preventDefault();
    }
    })

    也就是说被创建的dialog元素是被添加到body元素中了,你想dialog的内容被作为子元素添加在了它所创建的这个dialog元素里,自然也会被从原始的form元素中拿出来了,这样它里面的表单元素也就无法知道自己提交到哪去了。

    解决方法:
    有人可能想直接修改上面这段代码,把.appendTo(document.body)改为类似.appendTo(document.forms[0])这样的代码。不过不管怎么说修改jquery这么成熟的库总不是明智的作法。我个人是在调用了dialog()方法后再将生成的元素放入到form中。
    例如:
    $('#control_panel_dialog').dialog();
    $("body>div[role=dialog]").appendTo('form:first');

    或者:
    $('#control_panel_dialog').dialog().parent().appendTo('form:first');

    或者:
    $('#control_panel_dialog').dialog();
    $('.ui-dialog').appendTo('form:first');

    由于我正常是使用asp.net,正常只有一个 form 元素,这样的话直接加入到 ‘form:first’ 就好了。

    http://www.acroidea.com/index.php/2010/08/12/jquery-ui-dialog-can-not-submit-to-server/

  • 相关阅读:
    不通过App Store,在iOS设备上直接安装应用程序(转)
    Quest Central for DataBase 5.0.1,6.1 (软件+注册)
    微信公众号自定义菜单与关键词自动回复互斥解决
    转载《Spring AOP中pointcut expression表达式解析 及匹配多个条件》
    ssm 动态切换数据源
    spring aop
    微信公众号自动回复
    转载《spring定时任务轮询(spring Task)》
    N 秒打开一个新窗口
    java webservice maven spring Class Not Found Exception解决
  • 原文地址:https://www.cnblogs.com/pchgo/p/1918074.html
Copyright © 2011-2022 走看看