2010-11-21 131 views
0
插入输入字段

有人请帮助我如何添加新功能来删除该字段,我有JS脚本功能添加新的字段,如下如何删除这是通过JavaScript

<script language="javascript"> 
fields = 0; 
function addInput() { 
    if (fields != 10) { 
     var htmlText = "&nbsp;&nbsp;<input type='text' name='friends[]' value='' size='auto' maxlength='45' /><br />"; 
     var newElement = document.createElement('div'); 
     newElement.id = 'new_field'; 
     newElement.innerHTML = htmlText; 

     var fieldsArea = document.getElementById('new_field'); 
     fieldsArea.appendChild(newElement); 
     fields += 1; 

    } else { 
     alert("Only 10 fields allowed."); 
     document.form.add.disabled=true; 
    } 
} 
</script> 

但我需要一些帮助添加删除字段的新功能,对于任何建议和指针,我将不胜感激。

+0

如果你添加一些IDS的“格”这将是easyer让他们去除。 – Bakudan 2010-11-21 19:09:51

+0

您不能拥有'newElement.id ='new_field';'因为页面上的每个ID必须是唯一的。添加对您的ID唯一的内容。我建议像这样:在函数外部声明变量count = 0;每次添加一个新的输入计数++; 'newElement.id ='new_field'+ count' – cristian 2010-11-21 19:24:17

+0

不错的建议Octopus-Paul,以及我替换:newElement.id ='new_field';与:newElement.id ='new_field'+(fields + 1);,这也适用于除IE以外的大多数浏览器,但我不知道我是正确的,需要更多的指针,非常感谢 – jones 2010-11-22 04:42:12

回答

0

首先,有一个已有的问题,我用你的代码中看到。您正在将每个新字段的ID设置为相同的值,这是无效的HTML并且要求麻烦。一定要解决这个问题。

DOM元素的.removeChild method是你想要的。 .removeChild只有当传入的节点实际上是该元素的子节点时才会从DOM树(文档中实际包含的元素集合)中删除节点(元素或文本),否则会发生错误。

您可以轻松地通过查找其容器last child删除最后一个字段:

function removeLastField() { 
    var fieldsArea = document.getElementById('new_field'), 
     lastChild = fieldsArea.lastChild; 
    if(lastChild) { 
     fieldsArea.removeChild(lastChild); 
     fields -= 1; 
    } 
} 
+0

嗨idealmachine,我做了你的解释,但似乎并没有工作,即将id设置为唯一的ID,我试试替换:ewElement.id ='new_field';与:newElement.id ='new_field'+ 1;那是正确的?请不要犹豫,给予更多的建议,并提前致谢 – jones 2010-11-22 04:54:22

+0

把'newElement.id ='new_field'+ 1'是不正确的,因为所有的id都是new_field1。你的ID应该是像new_field1,new_field2 .... – cristian 2010-11-22 09:14:43