首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用jQuery从html选择中删除readonly

问无法使用jQuery从html选择中删除readonly
EN

Stack Overflow用户
提问于 2017-06-05 08:19:33
回答 3查看 3K关注 0票数 1

我试图动态地从一些HTML元素中删除“readonly”属性。

我在这里创建了一个JSFiddle来展示我的问题,下面是我的代码片段:

​

代码语言:javascript
复制
$('#theButton').on('click', function() {
  $('#mySelect').removeProp('readonly');
  $('#textInput').removeProp('readonly');
  //stop the form posting back
  return false;
})
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <label>Some input fields</label>
  <input type='text' class='form-control' id='textInput' readonly>
  <select id='mySelect' readonly class='form-control input-sm '>
    <option>1</option>
    <option>2</option>
    </select>
  <button class='btn btn-primary' id='theButton'>
    Enable Button
    </button>
</form>

​

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-05 08:26:07

使用removeProp是不正确的。

.removeProp()方法移除由.prop()方法设置的属性。

看看JQuery医生是怎么说的:

注意:不使用此方法删除本机属性,如选中、禁用或选中。这将完全删除该属性,一旦删除,将无法再次添加到元素中。使用.prop()将这些属性设置为false。

您必须使用prop属性来完成此操作。

获取匹配元素集中第一个元素的属性值,或为每个匹配元素设置一个或多个属性。

小提琴

片段

​

代码语言:javascript
复制
$('#theButton').on('click', function() {
  $('#mySelect').prop('disabled', false);
  $('#textInput').prop('readonly', false);
  return false;
})
代码语言:javascript
复制
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
   <label>Some input fields</label>
   <input type='text' class='form-control' id='textInput' readonly>
   <select id='mySelect' disabled class='form-control input-sm '>
       <option>1</option>
       <option>2</option>
   </select>
   <button class='btn btn-primary' id='theButton'>Enable Button </button>
</form>

​

票数 3
EN

Stack Overflow用户

发布于 2017-06-05 08:23:49

您应该使用jQuery的attr函数:

代码语言:javascript
复制
$('#mySelect').attr("readonly", false);
$('#textInput').attr("readonly", false);

虽然使用prop也会起作用,但是对于您的情况来说,最佳做法是使用attr。

票数 2
EN

Stack Overflow用户

发布于 2017-06-05 08:26:04

jQuery的.removeProp()文档明确指出,不应该使用它来删除本机属性。

不要使用此方法删除本机属性,如选中、禁用或选定。这将完全删除该属性,一旦删除,将无法再次添加到元素中。使用.prop()将这些属性设置为false。

使用.prop('readonly', false)使您的文本框可写。同样,正如@古拉迪奥建议的那样,复选框没有只读属性。请使用.prop('disabled', false)防止用户编辑它。

更多细节这里。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44364626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档