编辑3:正如我在下面提到的,我试图在头文件中初始化对话框,然后在任何页面中使用它。如果我在调用它之前初始化它,它就可以运行,但这意味着每次调用它时都会初始化它。我想多次初始化一次&。在初始化之前调用Jquery UI对话框
在阳光明媚的要求,代码/ HTML顺序如下:
WORDPRESS的header.php
<!DOCTYPE html>
<html xmlns="http<?php echo (is_ssl())? 's' : ''; ?>://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
<head>
... Wordpress/template stuff here...
<script src="../sma-js/jquery-ui-1.10.3/js/jquery-ui-1.10.3.custom.min.js" charset="utf-8"></script>
<script src="../sma-js/d3.v3/d3.v3.min.js" charset="utf-8"></script>
<script src="../sma-js/d3.tip.min.js" charset="utf-8"></script>
<script src="../sma-js/sma.d3.js" charset="utf-8"></script>
<script src="../sma-js/google-maps/js/handlebars-1.0.0.js" charset="utf-8"></script>
<script src="../sma-js/google-maps/js/jquery.storelocator.js"></script>
<script src="../sma-js/moment.min.js" charset="utf-8"></script>
<script src="../sma-js/jquery.validate.min.js" charset="utf-8"></script>
<script src="../sma-js/sma.js" charset="utf-8"></script>
<script type="text/javascript">
jQuery(window).load(function() {
jQuery(".loader").fadeOut("slow");
});
</script>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#dialog").dialog({
modal: true,
autoOpen: false,
buttons: { Ok: function() { jQuery(this).dialog("close"); } },
show: { effect: "blind", duration: 1000 },
hide: { effect: "explode", duration: 1000 }
});
});
</script>
</head>
<?php
$body_class = '';
$wrapper_class = '';
if(is_page_template('blank.php')):
$body_class = 'body_blank';
$wrapper_class = ' class="wrapper_blank"';
endif;
?>
<body <?php body_class(array($avada_color_scheme,$body_class)); ?>>
<div class="loader"></div>
<div id="dialog" title="ABC" ></div>
然后在页面模板(后<?php get_footer(); ?>
语句)我所说的对话作为其一部分表单提交如下:
WordPress的页面模板 - login.php中
// validate signup form on keyup and submit
jQuery("#forgot-pwd").validate({
rules: {
email: {
required: true,
email: true
}
},
messages: {
email: "Please enter a valid email address",
},
submitHandler: function(form) {
jQuery(".loader").fadeIn("fast");
var ResetPwd = generatePassword();
var ResetSalt = generateSalt();
jQuery.ajax({
url: "/sma-php/pwd.php?var=PWDRES&typ=r&ste=" + Base64.encode(jQuery('#user-email').val()) + "&rp=" + Base64.encode(ResetPwd) + "&rs=" + Base64.encode(hex_sha512(ResetSalt)), //the script to call to get data
dataType: 'text', //data format
success: function(data) { //on receive of reply
jQuery(".loader").fadeOut("fast");
jQuery("#dialog").html(data).dialog("open");
},
error: function(data) { //on receive of reply
jQuery("#dialog").html("An error occurred while sending you a new password.<br/><br/>Please try again or contact ABC for help...").dialog("open");
},
complete: function(data) { //on receive of reply
jQuery(".loader").fadeOut("fast");
}
});
}
});
编辑2:总之,我试图初始化头中的对话框,然后用它在任何页面;任何地方的身体。如果我在调用它之前初始化它,那么它就可以正常工作......但这意味着每次调用它时都会初始化它。
顺便说一句,我所说的对话框中JS在页面的BODY形式提交的一部分,打开如下:(数据是AJAX调用的结果):
jQuery("#dialog").html(data).dialog("open");
编辑:在拉尔的建议,我试图在每头下面同样reult“的文件准备好”:
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#dialog").dialog({
modal: true,
autoOpen: false,
buttons: { Ok: function() { jQuery(this).dialog("close"); } },
show: { effect: "blind", duration: 1000 },
hide: { effect: "explode", duration: 1000 }
});
});
</script>
我使用JQuery用户界面对话框w^idget但我不断收到(一些,不是所有的函数调用):
Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'open'
我在页面的头部初始化代码(这我理解第一次加载时执行)这样:
<script type="text/javascript">
jQuery("#dialog").dialog({
modal: true,
autoOpen: false,
buttons: { Ok: function() { jQuery(this).dialog("close"); } },
show: { effect: "blind", duration: 1000 },
hide: { effect: "explode", duration: 1000 }
});
</script>
及以下DIV作为BODY开放标签后的第一条语句:
我打电话,我与JS网页中间的某处对话框的形式提交的一部分,例如,密码重置形式。
这是怎么发生的?我应该在哪里放置这个小部件的div/init JS,以便它按照需要工作?我还没有找到任何具体的信息,所以你的帮助表示赞赏!
最后,我认为你需要使用的document.ready() –
嗨拉尔,您的建议感谢之前缺少结束脚本标签。我也尝试过,结果相同......它似乎只是页面加载时代码运行的顺序... – TheRealPapa
错误本身已足够清晰。你正试图在完全加载之前调用jQuery UI的对话方法。所以首先初始化jQuery Ui然后调用它。 – Praveen