Php 如何在Jquery对话框中调用函数?

Php 如何在Jquery对话框中调用函数?,php,javascript,jquery,Php,Javascript,Jquery,我一直在尝试在jquery对话框中调用javascript函数,我在这方面取得了成功。当我通过将数据从列表框传递到调用数据库的php页面,在对话框中创建一个动态表单时,就会出现复杂的情况。我试图在第一个下拉列表中选择一个值时禁用第二个下拉列表。其次,我想验证一个文本框,看看是否存在用户名 我已经创建了一个JSbin,但我不知道如何复制PHP部分。当前JSbin正在针对第一个下拉菜单禁用第二个下拉菜单工作。当表单由我传递到对话框中的php页面创建时,我无法复制此功能 有没有人有任何提示、指针或例子

我一直在尝试在jquery对话框中调用javascript函数,我在这方面取得了成功。当我通过将数据从列表框传递到调用数据库的php页面,在对话框中创建一个动态表单时,就会出现复杂的情况。我试图在第一个下拉列表中选择一个值时禁用第二个下拉列表。其次,我想验证一个文本框,看看是否存在用户名

我已经创建了一个JSbin,但我不知道如何复制PHP部分。当前JSbin正在针对第一个下拉菜单禁用第二个下拉菜单工作。当表单由我传递到对话框中的php页面创建时,我无法复制此功能

有没有人有任何提示、指针或例子?在过去的两个星期里,我一直在努力让它发挥作用,但没有效果:(


编辑:我认为这与DOM无法识别由另一个页面创建的PHP表单数据有关,有人知道我将如何让它注册到DOM吗?

使用
on
委托您的
更改
事件

  $(document).on('change','select',function(){
   ....
  });

将您的
更改
事件委派给
开启

  $(document).on('change','select',function(){
   ....
  });

在对话框窗口打开后,是否可以尝试加载窗体函数

编辑我已将$(此).dialog('close');放在上面,返回false

$( "#dialogbox" ).dialog({

        autoOpen: false,
        modal: true,
        width: 'auto',
        show: {
            effect: "blind",
            duration: 1000
        },
        hide: {
            effect: "explode",
            duration: 1000
        },

        buttons: {
            //This function handles passing in the form data generated by getdialogbox.php 
            'Submit' : function(){
                $.ajax({
                    type: "POST",
                    url: "include/insertToDB.php",
                    data: $("#htmlform").serialize(),

                    success: function(){
                        $("#htmlform").submit();
                    }
                });
                $(this).dialog('close');
                return false;


            }
        },
        open: function( event, ui ) {    
            var $inputs = $('select.titans');
            var $controller = $('select.controller');
            $('select').change(function(){
                if($controller.val() !== ''){
                    $inputs.prop('disabled', $(this).val() !== '');
                    $inputs.val('');
               }else            {
                    $inputs.prop('disabled',false); 
               }
           });
        }

    });

在对话框窗口打开后,是否可以尝试加载窗体函数

编辑我已将$(此).dialog('close');放在上面,返回false

$( "#dialogbox" ).dialog({

        autoOpen: false,
        modal: true,
        width: 'auto',
        show: {
            effect: "blind",
            duration: 1000
        },
        hide: {
            effect: "explode",
            duration: 1000
        },

        buttons: {
            //This function handles passing in the form data generated by getdialogbox.php 
            'Submit' : function(){
                $.ajax({
                    type: "POST",
                    url: "include/insertToDB.php",
                    data: $("#htmlform").serialize(),

                    success: function(){
                        $("#htmlform").submit();
                    }
                });
                $(this).dialog('close');
                return false;


            }
        },
        open: function( event, ui ) {    
            var $inputs = $('select.titans');
            var $controller = $('select.controller');
            $('select').change(function(){
                if($controller.val() !== ''){
                    $inputs.prop('disabled', $(this).val() !== '');
                    $inputs.val('');
               }else            {
                    $inputs.prop('disabled',false); 
               }
           });
        }

    });

在select下拉列表中,您希望添加一个onclick调用。然后,您希望将javascript中的所有内容都设置为从onclick调用的函数。更新后的JSbin的答案如下:

在select下拉列表中,您希望添加onclick调用。然后,您希望将javascript中的所有内容设置为从on调用的函数点击。一个更新的JSbin,答案如下:

给出了一个快照,但不幸的是两个下拉列表都没有响应。给出了一个快照,但不幸的是两个下拉列表都没有响应。因此,您首先复制html,然后将其粘贴到对话框div中。如果您已经将表单作为隐藏项显示在页面上,请单击“活动”此外,如果您的外部表单需要自己的JavaScript才能正常工作,请确保脚本已加载到父页面上,或使用getScript()加载到页面上。当您单击调用的“opendialogbtn”id时,div“dialogbox”中的所有内容都将由php页面生成“passtophp(…)因此,你先复制html,然后将其粘贴到dialog div右侧??如果你已经将表单作为隐藏项显示在页面上,然后通过单击操作将其显示出来,这可能会对你更好……此外,如果你的外部表单需要自己的JavaScript才能正常工作,请确保脚本已经加载到父页面上,或者加载到带有getScript()的页面。当您单击调用“passtophp(…)”的“opendialogbtn”id时,div“dialogbox”中的所有内容都将由php页面生成。是的,对此进行了尝试。似乎仍然无法识别该函数。有一个未定义的函数称为passtophp()在jsbin文档中,它会导致代码出现故障。它是否在原始文档中定义?passtophp()已定义,但不在JSBin中,因为我不确定如何在JSBin中重新创建php页面,但它基本上创建了一个与JSBin中类似的表单。我尝试了更新的答案,但下拉列表仍然没有禁用另一个。我感谢您的帮助!是的,尝试了一下。似乎仍然无法识别该函数。存在未定义的问题在jsbin文档中调用的函数passtophp()会导致代码出现故障。它是否在原始文档中定义?passtophp()已定义,但未在JSBin中定义,因为我不确定如何在JSBin中重新创建php页面,但它基本上创建了一个类似于JSBin中的表单。我尝试了更新的答案,但下拉列表仍然没有禁用另一个。我感谢您的帮助!