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/

  • 相关阅读:
    玩耍redis遇到的问题之记录
    哈勃望远镜--星柱图
    用js将从后台得到的时间戳(毫秒数)转换为想要的日期格式
    div水平居中
    hibernate和spring下载网址
    intellj idea 如何设置类头注释和方法注释(转载)
    转载:IT人高效的休息方式
    什么是REST?以及RESTful的实现
    easyui datagrid 获取记录数 页数 当前页
    font字体文件跨域
  • 原文地址:https://www.cnblogs.com/pchgo/p/1918074.html
Copyright © 2011-2022 走看看