Cakephp:使用JQuery动态修改表单

时间:2010-12-24 19:20:04

标签: jquery cakephp

我正在尝试动态地将元素添加到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')调用不正确。任何人都可以指出如何正确地做到这一点吗?

2 个答案:

答案 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。这是为了课程。