我正在使用步骤向导表单和以下代码
$(document).ready(function(){
localStorage.removeItem('dateFormat');
readcategories();
...
...
});
function getDateFormatFromDatabase() {
$.ajax({
url: 'index.php?action=getDateFormat',
type: 'POST',
dataType: 'JSON',
success: function(data)
{
dateFormat = data.dateFormat;
localStorage['dateFormat'] = dateFormat;
}
});
}
function getDateFormat() {
getDateFormatFromDatabase();
var dateFormat = localStorage['dateFormat'];
// alert(dateFormat);
return dateFormat;
}
function checkValidDate(dateValue) {
var dateFormat = getDateFormat();
...
...
}
..... wizard form code
.....
onFinishing: function (event, currentIndex) {
var form = $(this);
var purchasedate = $("#purchasedate").val().trim();
var purchasedate = new Date(purchasedate);
if(checkValidDate(purchasedate.toDateString()) == false)
{
displayDateErrorMessage("Purchase Date");
return false;
}
...
}
我正在清除localStorage
document.ready
函数,因为我希望它始终包含从函数getDateFormat
中的数据库中获取的新值。现在它总是清除dateFormat
,结果总是得到未定义的值,日期没有验证......
请帮忙!!!
答案 0 :(得分:0)
<强> FIRST:强>
而不是使用:
localStorage['dateFormat'] = dateFormat;
和
var dateFormat = localStorage['dateFormat'];
你需要:
localStorage.setItem('dateFormat', dateFormat);
和
var dateFormat = localStorage.getItem('dateFormat');
详细了解localStorage here。
<强> SECOND:强>
函数getDateFormatFromDatabase();
包含ajax调用。由于ajax调用是异步操作,这意味着在调用dateFormat
后,您不会将localStorage
设置为getDateFormatFromDatabase();
。要解决此问题,您需要通过设置async: false
:
function getDateFormatFromDatabase(callback) {
$.ajax({
url: 'index.php?action=getDateFormat',
type: 'POST',
async: false,
dataType: 'JSON',
success: function(data)
{
localStorage.setItem('dateFormat', data.dateFormat);
}
});
}