Javascript& Html加载两次(表单字段)我怎么知道它属于哪个元素?

时间:2016-12-31 19:15:07

标签: javascript php jquery html

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加载一旦它只适用于第一个字段,加载两次,只适用于第二个字段。

我如何克服这个障碍?

1 个答案:

答案 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>