我有一个包含一些动态元素的表单。这些基本上都是文本输入框,其中将包含带有按钮的电话号码,以便删除该元素。 另一个按钮添加一个新元素,最后一个将其保存到数据库。 我想要做的是“标记”已更改,已删除或新号码的号码。 因此,我可以在数据库上进行更新,插入或删除操作,因为我不想删除所有数据,并且每次都在数据库中插入所有数据。使用jquery隐藏表单元素而不提交?
delDisaNumber是不是我想要的...我想隐藏的元素,所以我可以标记为删除。但是这样做会使表单看起来像表单被提交。另一方面,使用.remove可见地表现出我想要的样子,但完全删除了不是我想要的元素(我希望隐藏它)。
以下是迄今为止有关的代码。 (这是写在jQuery和PHP使用kohana)
<script type="text/javascript">
var disaId = 1;
function setModified(element){
$(element).attr('name', 'update');
}
function delDisaNumber(element){
$(element).prev('name','delete');
$(element).parent().remove(); /* has the effect I want, but removes the element */
// $(element).parent().hide() /* this is what I want but submits the form */
}
function addDisaNumber(){
$("#disa_numbers").append('<li id="disa_num"'+disaId+'><input /><button onClick="delDisaNumber">X</button></li>');
$disaId++;
}
</script>
...
<div id="disa">
<?php
echo form::open("edit/saveDisaNumbers/".$phone, array("class"=>"section", "id"=>"other"));
echo form::open_fieldset(array("class"=>"balanced-grid"));
?>
<ul class="fields" id="disa_numbers">
<?php
$disaId = 1;
foreach ($disa_numbers as $disa_number){
$disaid_name = 'disa_num'.$disaId;
echo '<li id="'.$disaid_name.'">';
echo form::input("disa".$disaId, $disa_number->cid_in, "onKeyDown='setModified(this)'");
echo form::button("",'X','onClick="delDisaNumber(this)" class="button image"');
echo "</li>";
$disaId++;
}
?>
</ul>
<button type="button" onclick="addDisaNumber()">Add another number</button>
<?php
echo form::submit('submit', 'Save');
echo form::close();
?>
</div>
编辑:似乎表单::按钮不按预期行事。如果我用echo'X'替换它,它不会发布表单。
听起来不错,请给出一个更完整的例子吗? – Matt 2010-02-22 03:08:04