我正在尝试动态地将元素添加到Cakephp表单中:
<?php echo $javascript->link('jquery',false); ?>
<script language="javascript" type="text/javascript">
function addFormField() {
var id = parseInt(document.getElementById("id").value);
$('.divTxt').append("<p id='row" + id + "'><label for='txt" + id + "'>Field " + id + " <input type='text' size='20' name='txt[]' id='txt" + id + "'> <a href='#' onClick='removeFormField(\"#row" + id + "\"); return false;'>Remove</a><p>");
document.getElementById("id").value = id+1;
}
</script>
<?php echo $this->Form->create('Booking'); ?>
<input type="hidden" id="id" value="1">
<div id="divTxt"></div>
<?php echo $this->Form->end('Save Post'); ?>
<p><a href="#" onClick="addFormField(); return false;">Add</a></p>
由于CakePHP创建表单的特殊性,我认为我的$('。divTxt')调用不正确。任何人都可以指出如何正确地做到这一点吗?
答案 0 :(得分:1)
您问题的快速回答是,您必须将其称为$("#divTxt")
而不是$(".divTxt")
,这意味着class=divTxt
并且您想要id=divTxt
尽量不要将jQuery与原始dhtml混合使用。您可以使用$("#id").val()
访问jQuery中的表单元素,并使用$("#id").val(newValue)
答案 1 :(得分:1)
您需要将代码包装在
中$('document').ready(function(){
// Put your ``var id = `` code in here.
});
正在发生的事情是,在表单输出之前,页面加载期间上面的代码var id = ...
正在运行。如果你在PHP中打开输出缓冲,它会有所帮助,但这不是它的可靠修复。就绪功能(上图)是。
而且,您需要使用#the_id
访问div,而不是.the_id
。这是为了课程。