我在标签小部件上添加ajax加载站点的日期选择器时遇到了一些问题。我来解释一下我到目前为止所做的工作。
我首先做了所有的表格和东西,添加了一个日期选择器,并确保一切工作。然后我想创建一个选项卡小部件,它将加载带有表单的页面。虽然这确实工作,所有的$_post的东西也工作,jQuery似乎不工作。
是否有任何已知的原因,或者这可能是一个特定的问题与我有关?
如果需要代码来帮助解决这个问题,我会稍后编辑它,但现在我想知道这是否可能。
请记住,我对所有这些jQuery和AJAX的东西相对较新。提前感谢!
——编辑——
注意:我将脚本包含在每页的标题中。
标签页:
视图<div id="tabs">
<ul>
<li><a href="../tabs/bericht">Bericht</a></li>
<li><a href="../main/initiative">Initiatief</a></li>
<li><a href="../main/profile">Interesse</a></li>
</ul>
Java $(document).ready(function(){
$( "#tabs" ).tabs({collapsible:true, active:false, effect:'ajax'});
});
加载页面:
$(document).ready(function(){
$('#date').datetimepicker({dateFormat: 'yy/mm/dd'});
var counter = 1;
$("#addButton").click(function () {
if(counter>10){
alert("Only 10 textboxes allow");
return false;
}
var newTextBoxDiv = $(document.createElement('div'))
.attr("id", 'TextBoxDiv' + counter);
newTextBoxDiv.after().html('<input type="text" name="requirements' + counter + '" id="requirements' + counter + '" value="" > <input type="text" name="requirementscount' + counter + '" id="requirementscount' + counter + '" value="" size="2"><br>');
newTextBoxDiv.appendTo("#TextBoxesGroup");
counter++;
});
$("#removeButton").click(function () {
if(counter==1){
alert("No more textbox to remove");
return false;
}
counter--;
$("#TextBoxDiv" + counter).remove();
});
});
您已经在文档就绪时使用了日期选择器函数,但是此时date元素还没有在DOM中注册,所以要使日期选择器正常工作,您必须调用$('#date')。datetimepicker({dateFormat: 'yy/mm/dd'})函数。
为此,您必须将tab回调方法"load"分类
$(document).ready(function(){
$( "#tabs" ).tabs({
load: function( event, ui ) {
if($('#date').length>0){
$('#date').datetimepicker({dateFormat: 'yy/mm/dd'});
}
}
});
});
$(document).ready()
仅在主页面内有效。
当您用AJAX加载新内容时,ready
事件已经发生,因此AJAX加载的代码将立即触发。这意味着如果你的代码在它引用的html之前被加载,它将在html存在之前触发。
您可以使用以下几种方法:
将ajax加载的代码放在它在ajax加载的文件中引用的html之后
或
使用选项卡的加载回调来运行ajax内容的代码