如何使用Javascript禁用所有具有相同Id的重复Texbox?

如何使用Javascript禁用所有具有相同Id的重复Texbox?,javascript,jquery,html,Javascript,Jquery,Html,我有相同Id的不同数量的文本框。我必须使用相同的Id。我没有使用类的权限。我只需要启用第一个文本框,禁用其余的文本框 以下是我的代码和3个不同的文本框: <input type="Textbox" id="abc" data-templatefieldid="12" required="required" placeholder="Son"> <input type="Textbox" id="abc" data-templatefieldid="12" required="

我有相同Id的不同数量的文本框。我必须使用相同的Id。我没有使用类的权限。我只需要启用第一个文本框,禁用其余的文本框

以下是我的代码和3个不同的文本框:

<input type="Textbox" id="abc" data-templatefieldid="12" required="required" placeholder="Son">

<input type="Textbox" id="abc" data-templatefieldid="12" required="required" placeholder="Son">

<input type="Textbox" id="abc" data-templatefieldid="12" required="required" placeholder="Son">

我需要这样的输出,我需要启用第一个,禁用其余的:

<input type="Textbox" id="abc" data-templatefieldid="12" required="required" placeholder="Son">

<input type="Textbox" id="abc" data-templatefieldid="12" disabled="disabled" required="required" placeholder="Son">

<input type="Textbox" id="abc" data-templatefieldid="12" disabled="disabled" required="required" placeholder="Son">

使用此脚本

var inputList = document.querySelectorAll('#abc');
console.log(inputList);
for(var index = 1; index < inputList.length; index++) {
    inputList[index].setAttribute('disabled', 'disabled');
}
var-inputList=document.queryselectoral(“#abc”);
控制台日志(输入列表);
对于(var index=1;index
试试这个

var txt = $('#abc');
$.each(txt, function (index) {
    if(index > 0) {
        $(txt[index]).attr('disabled', 'disabled');
    }
});

ID
在HTML页面中必须是唯一的。

也就是说,如果因为你的公司有一套愚蠢的规范,你没有其他选择,那么你可以使用这个。但不建议对不同的元素使用相同的id

jQuery解决方案。

$(函数(){
$('[id=abc]').slice(1).prop(“已禁用”,true);
});

Id用于唯一标识。理想情况下,您不应该使用重复的id。 在不允许添加类的情况下,可以添加自定义属性作为选择器

您的HTML可以是

<input type="Textbox" id="abc1" my-id="123" data-templatefieldid="12" required="required" placeholder="Son">

<input type="Textbox" id="abc2" my-id="123" data-templatefieldid="12" required="required" placeholder="Son">

<input type="Textbox" id="abc3" my-id="123" data-templatefieldid="12" required="required" placeholder="Son">

使用@satish sam解决方案,但使用
name
属性而不是id:

Html


你可以试试这个,这个可能有用

function clearAll()
{
   var ele= document.getElementsById("myId");
     for(var i=0;i<ele.length;i++){
      if(i>0)
        ele[i].disabled = true;
      }
}
函数clearAll()
{
var ele=document.getElementsById(“myId”);
对于(var i=0;i0)
ele[i].disabled=true;
}
}
根据的规定,id属性在HTML页面中必须是唯一的。并且在页面中有多个id(副本)是不标准的

但要使用JQuery查找重复的id,可以使用以下代码:

//有关重复的ID,请参见控制台
$('[id]')。每个(函数(){
var id=$('[id=“”+this.id+'“]');
如果(id.length>1&&id[0]==此){
log('ID:'+this.ID+'ID duplicate');
}
});

A1
B
C

A2
使用
querySelectorAll
获取输入。实际上,您首先不应该在文档中有多个相同的ID。它扰乱了CSS中选择器的使用,并阻止您使用
getElementById
获取正确的元素。如果要区分,ID应该是唯一的。
我必须使用相同的ID。我没有权限在文档中重复使用相同的
ID
类,这是无效的。无论谁拒绝你改课的许可都是完全错误的。听起来你需要一家新的软件公司。@Jai是的。我也不愿意<代码>我的软件公司的要求
我们还能做什么,这个人正处于这种情况。你发布的答案会很好。但实际上问题是如何使用
javascript
not
jQuery
:)@shu
jQuery
标记在那里。@shu:)我也添加了一个js解决方案。应该得到IE9的支持
$( "#abc" ).not(':first').attr('disabled','disabled');
<input type="Textbox" name="abc" data-templatefieldid="12" required="required" placeholder="Son">

<input type="Textbox" name="abc" data-templatefieldid="12" required="required" placeholder="Son">

<input type="Textbox" name="abc" data-templatefieldid="12" required="required" placeholder="Son">
var txt=$('[name="abc"]');
$.each(txt,function (index) {
  if(index>0)
  {
    $(txt[index]).attr('disabled','disabled');
  }
});
function clearAll()
{
   var ele= document.getElementsById("myId");
     for(var i=0;i<ele.length;i++){
      if(i>0)
        ele[i].disabled = true;
      }
}