首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

javascript DOM操作的有关问题,

2012-04-11 
javascript DOM操作的问题,在线等,急!!!!!!!!!!C# codescript typetext/javascriptvar count 0fun

javascript DOM操作的问题,在线等,急!!!!!!!!!!

C# code
<script type="text/javascript">         var count = 0;         function AddProduct() {             if (count == 12)                 return;             count += 1;             var File1 = document.getElementById("file1");             var div = document.createElement("div");             var countTxt = document.createTextNode("SN" + count);             var inputTxt = document.createElement("input");             inputTxt.type = "text";             inputTxt.name = "txtSN" + count;             var btn = document.createElement("input");             btn.type = "button";             btn.value = "Cancel";             btn.onclick = function () {                 this.parentNode.parentNode.removeChild(this.parentNode);                 //alert(this.parentNode.nodeName);                 var str = File1.innerHTML;                 var re = /[^<]+/i;                 var n = File1.getElementsByTagName("div");                 for (var k = 0; k < n.length; k++) {                     n[k].innerHTML = n[k].innerHTML.replace(re, "SN" + (k + 1));                     n[k].getElementsByTagName("input").item(1).onclick = this.onclick;                 }                 count -= 1;             }             inputTxt.onchange = function () {                              }             div.appendChild(countTxt);             div.appendChild(inputTxt);             div.appendChild(btn);             File1.appendChild(div);         }    </script>

以代码实现了asp.net 页面中动态的添加若干个div节点,内容包括一个Text 节点,一个文本框和一个按钮,现在我想实现在inputText这些文本框中输入信息的时候,验证它里面的数据和前面的所有同类inputText中的文本信息不同。如果相同就提示并返回。代码中inputTxt.onchange = function () { }该怎么写,求指点!



[解决办法]
建议楼主贴个能运行的 html+js ,这样方便解决问题,不然就只有猜了。
[解决办法]
我猜楼主是不是担心动态添加的时候和前面重复了呀~ 

如果那样的话~你建个字符串str,

str=$("看你情况写抓取规则,抓到所有的同类数组元素").text( ); 哦~没法用jquery是吧~

这里你str+=数组元素的innerTEXT;


然后用最新输入的这个去验证前面的~indexof(str)~ 没有就返回-1

然后你响应动作~
[解决办法]
//大致这样写
inputTxt.onchange = function () {
txtNode = this.previousSibling.nodeValue;
if (txtNode != this.value) {
alert("不一致");
}
}
[解决办法]
LZ可以把inputTxt的name设成一样的,比如"txtSN"。
id设成唯一的,用来区别 "txtSN" + count;

inputTxt.onchange = function () {
 
var inputTxtArr=document.getElementsByName("txtSN");
for(var i=0;i<inputTxtArr.length;i++)
{
if(inputTxtArr[i].value==this.value&&inputTxtArr[i].id!=this.id)
{
alert("重复");
}
}
}
[解决办法]
HTML code
<!doctype html><html><head>    <meta charset="utf-8"/></head><body>    <input type="button" id="add" value="add" />    <div id="file1"></div>    <script type="text/javascript">        document.getElementById('add').onclick = function(){            var File1 = document.getElementById("file1");            AddProduct(File1);            if(!initEvent.hsdInit){                initEvent(File1);            }        }        var count = 0;        function AddProduct(container) {            if (count == 12)                return;            count += 1;            var container = document.getElementById("file1"),                div = document.createElement("div"),                countTxt = document.createElement("label"),                inputTxt = document.createElement("input");            countTxt.innerHTML = "SN" + count;            inputTxt.type = "text";            inputTxt.name = "txtSN" + count;            var btn = document.createElement("input");            btn.type = "button";            btn.value = "Cancel";                        inputTxt.addEventListener("focusout", function(){                alert(2);            }, false);                        div.appendChild(countTxt);            div.appendChild(inputTxt);            div.appendChild(btn);            container.appendChild(div);        }        function initEvent(elem){            var divs = elem.getElementsByTagName("div");            elem.onclick = function(event){                var e = event || window.event,                    target = e.target || e.srcElement;                if(target.tagName !== "INPUT" || target.type !== "button"){                    return false;                }                var parent, div, label;                parent = target.parentNode;                parent.parentNode.removeChild(parent);                for(var i = 0, len = divs.length; i < len; i++){                    div = divs[i];                    if(div === parent){                        delete divs[i];                        i--;                    }else{                        label = div.getElementsByTagName("label")[0];                        label.innerHTML = label.innerHTML.replace(/\d+/, i + 1);                    }                }            }            if(document.addEventListener){                elem.addEventListener('blur', function(event){                    changeHandle(event);                }, true);            }else{                elem.onfocusout = changeHandle;            }            var changeHandle = (function(){                var oldValue;                return function(event){                    var e = event || window.event,                        target = e.target || e.srcElement,                        value = target.value,                        parent = target.parentNode;                    var div, inputTxt;                    if(target.tagName !== "INPUT" || target.type !== "text"){                        return false;                    }                    if(value !== oldValue){                        oldValue = value;                        return false;                    }else{                        for(var i = 0, len = divs.length; i < len; i++){                            div = divs[i];                            if(div === parent){                                continue;                            }                            inputTxt = div.getElementsByTagName("input")[0];                            if(inputTxt.value === value){                                alert("文本框输入值重复了!");                            }                        }                    }                }            })();            initEvent.hsdInit = true;        }    </script></body></html> 

热点排行