我需要一些帮助。
对于我的生活,我不能想到这一点。我头上缠着它只是无济于事。
我想设置两个功能。
function:select_date()
与用户交互以从jQuery Date选择器中选择日期。如果对话框已关闭,则返回null。
然后是第二个功能:test()
,以检查日期是否为picked/selected
。
这是我的困境,当执行函数test()
时,会弹出一个警告框并说"undefined"
,这意味着,我永远不会选择日期,而且始终是"undefined"
< / p>
我看不出我在这里做错了什么,一切对我来说都是合乎逻辑的。
<!DOCTYPE html>
<html>
<head>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/jquery-ui.js"></script>
<script type="text/javascript">
function select_date() {
var sdate
$('#dd').dialog({
autoOpen: true,
modal: true,
overlay: {
opacity: 0.5,
background: 'black'
},
title: "title",
height: 265,
width: 235,
draggable: false,
resizable: false
});
$('#d1').datepicker({
onSelect: function () {
$("#dd").dialog("close");
}
});
return sdate
}
function test() {
var x = select_date()
alert(x)
}
</script>
<style type="text/css">
#d1 {font-size:64%;}
</style>
</head>
<body>
<div id="dd">
<div id="d1">
</div>
</div>
<a href="javascript:test()">test</a>
</body>
</html>
答案 0 :(得分:6)
这是JavaScript的工作方式...... select_date()
会立即返回,因为.dialog()
和.datepicker()
是异步方法。在发生任何事情之前调用return sdate
。正确的方法是使用onSelect()
function select_date(callback) {
$('#dd').dialog({
autoOpen: true,
modal: true,
overlay: {
opacity: 0.5,
background: 'black'
},
title: "title",
height: 265,
width: 235,
draggable: false,
resizable: false
});
$('#d1').datepicker({
onSelect: function () {
$("#dd").dialog("close");
callback($(this).datepicker('getDate'));
}
});
}
function test() {
select_date(function(selected_date) { alert(selected_date); });
}
唯一的问题是,如果没有选择日期并且对话框已关闭,则不会调用回调。您可以在对话框中为其添加一个事件监听器,并使其callback
值为null/undefined
,但这取决于您。