我有一个网页,当用户输入自动保存在数据库中的日期时。我还有一个datepicker图标来选择日期。但是当我更新或按下添加按钮添加新条目(或删除图标以删除特定条目)时,所有日期选择器图标都会消失。我刷新页面以再次出现datepicker图标。我认为ajax调用忽略了javascript日期选择器
HTML代码:
echo "<td class='main'><input disabled id='".$row['a_id']."' class='apousies_edit datepicker' tabindex='$tabindex_counter' onclick='update_record(event,this,"apousies","$key","id","".$row['a_id']."")' value='$val'></td>";
$tabindex_counter++;
echo "<button class='button4' onclick='new_record_adeia("$id");showDatePicker(tabindex)' value='Προσθήκη Άδειας'/><img src='add.png' width='40' height='40'></button>";
Ajax电话:
function new_record_adeia(id) {
loadXMLDoc("/prosopiko/add_rec_adeia.php?id="+encodeURIComponent(id),function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
document.getElementById('apousies_edit').innerHTML=xmlhttp.responseText;
})
}
我用来添加日期的代码:
session_start();
include "classes.php";
$functions=new classes;
$id_proswpiko=trim($_REQUEST["id"]);
$now=date('Y-m-d');
$res=$functions->query("INSERT INTO apousies(id_proswpiko,id_logos,start_date,diarkeia,id_status_adeia) VALUES ('$id_proswpiko',1,'$now','4','1')");
$functions->create_apousies_screen($id_proswpiko);
Jacascript code to show the datepicker I get it from this:
https://github.com/chrishulbert/datepicker/blob/master/datepicker.js
更新日期:
session_start();
include "classes.php";
$functions= new classes;
$table=trim($_REQUEST["table"]);
$field=trim($_REQUEST["field"]);
$val=trim($_REQUEST["val"]);
$check_field=trim($_REQUEST["check_field"]);
$check_var=trim($_REQUEST["check_var"]);
$sql="UPDATE $table SET $field='$val' WHERE $check_field='$check_var'";
$result=$functions->query($sql);
出了什么问题,我的日期选择器不起作用?
答案 0 :(得分:0)
datepicker图标在更新日期或添加日期后消失
图标消失,因为datepicker库在表单加载时设置日期选择器(特别是在DOMContentLoaded
事件触发时)。然后,您创建一个ajax调用,用一个更新的项目列表替换包含日期选择器图标的HTML。
由于此时库已经完成了它的工作,新的html控件将不会获得datepicker图标(也没有任何与该库相关的功能)。
恕我直言,你有两种选择:
修改库,以便添加一个setupPicker
方法,您可以在用ajax结果替换HTML后手动调用该方法。
使用已提供该功能的其他库。
我会选择第二个选项,因为该库是9yo,而document.getElementsByTagName("*")
(请参阅最后的源代码)看起来非常糟糕。