HTML :
下面的字段是动态加载的,不止一次。
<div>
<label><?php echo $form->label; ?>
<select
name=<?php echo $form->name; ?>
idx=<?php echo $form->entity; ?>
>
<option value="<?php echo $form->option()->value; ?>"><?php echo $form->option()->name; ?></option>
</select>
<td>
<a href="#" id="addnew" onclick="onOffButton('addfield', 'addbtn'); return false;">[Open] Add New</a>
<span id="addfield">
<input name="newstuff type="text"></input>
</span>
<a href="#do-something" id="addbtn">Click to add</a>
</td>
</div>
JAVASCRIPT :
我可以让下面的脚本加载两次,或者一次。如果我加载一次,那么它只适用于第一个字段。如果我加载它两次,那么它只适用于第二个字段。
<script type="text/javascript">
var onix = false;
function onOffButton(id, text) {
var select_id = $("#addfield").prevAll('select').attr("idx");
console.log(select_id);
if (onix == false) {
document.getElementById(id).style.display = 'block';
document.getElementById(text).style.display = 'block';
document.getElementById("addnew").textContent="[Close] Add New";
onix = true;
} else if (onix == true) {
document.getElementById(id).style.display = 'none';
document.getElementById(text).style.display = 'none';
document.getElementById("addnew").textContent="[Open] Add New";
onix = false;
}
}
</script>
概要
我需要知道addfield所属的元素。最重要的是,form-&gt;实体。目标是生成如下所示的GET链接:localhost/$form->entity/create/[value-of-newstuff]
我尝试在外部文件上设置数组。这确实有效,但我不知道如何处理它。
我还尝试了在所有属性上使用<?php echo rand(); ?>
。结果如预期的那样,当javascript加载一旦它只适用于第一个字段,加载两次,只适用于第二个字段。
我如何克服这个障碍?
答案 0 :(得分:1)
我暂时解决了
以一种非常粗暴的方式,可能有一种更美好的方式,但这就是我想出来解决它的方法。
基本上我开始使用以下字段:
<?php $onix = rand(); ?>
然后我在html的每个id上打了那个垃圾。在javascript方面,我基本上把它打到了所有地方。它作为一个mofo是丑陋的,但它就像一个魅力:
<script type="text/javascript">
var onix<?php echo $onix; ?> = false;
function onOffButton<?php echo $onix; ?>(id<?php echo $onix; ?>, text<?php echo $onix; ?>) {
var select_id<?php echo $onix; ?> = $("#addfield<?php echo $onix; ?>").prevAll('select').attr("idx<?php echo $onix; ?>");
console.log(select_id<?php echo $onix; ?>);
if (onix<?php echo $onix; ?> == false) {
document.getElementById(id<?php echo $onix; ?>).style.display = 'block';
document.getElementById(text<?php echo $onix; ?>).style.display = 'block';
document.getElementById("addnew<?php echo $onix; ?>").textContent="[Close] Add New";
onix<?php echo $onix; ?> = true;
} else if (onix<?php echo $onix; ?> == true) {
document.getElementById(id<?php echo $onix; ?>).style.display = 'none';
document.getElementById(text<?php echo $onix; ?>).style.display = 'none';
document.getElementById("addnew<?php echo $onix; ?>").textContent="[Open] Add New";
onix<?php echo $onix; ?> = false;
}
}
</script>