javascript - 如何在具有相同类的多个文本框上将 readonly 属性设置为 false?

标签 javascript jquery html dynamic

我有以下三个控件,它们都有相同的名为“txt11”的类,我想将所有三个文本框的只读属性更改为 false 我点击编辑按钮。

$(".btn11").click(function(){
  $(".txt11").focus();
  $(".txt11").prop("readonly", false);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input readonly="" name="txtSkill[]" value="database" class="txt11">
<input readonly="" name="txtSkill[]" value="sql" class="txt11">
<input readonly="" name="txtSkill[]" value="mysql" class="txt11">
<input type="button" value="Edit" name="btnEdit11"id="btnXyz2" class="btn11"/>

我使用相同类的原因是我在运行时动态呈现这些输入框,所以我不确定将呈现多少个文本框。

但只有最后一个文本框被设置为 readonly=false 上面的输入框仍然设置为只读。

最佳答案

问题来自焦点 $(".txt11").focus();,它会聚焦最后一次出现的类 txt11,因此您应该指定您要关注的对象,例如:

$(".txt11:eq(0)").focus(); //Focusing the first input

类的 prop 会将属性分配给所有输入。

注意:您不能聚焦readonly 字段,因此您应该在将readonly 设置为 之后添加聚焦语句假的

$(".btn11").click(function(){
    $(".txt11").prop("readonly", false);
    $(".txt11:eq(0)").focus();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input readonly="" name="txtSkill[]" value="database" class="txt11">
<input readonly="" name="txtSkill[]" value="sql" class="txt11">
<input readonly="" name="txtSkill[]" value="mysql" class="txt11">
<input type="button" value="Edit" name="btnEdit11"id="btnXyz2" class="btn11"/>

按组编辑聚焦:

var last_class = 'txt11';

$(".btn11").click(function(){
  $(".txt11").prop("readonly", false);
  $(".txt11:eq(0)").focus();
});

$('body').on('focus', "input:text", function(){
  var current_class = $(this).prop('class');

  if( $(this).prop('readonly') ){
    if(current_class!=last_class){
      $("."+last_class).prop("readonly", true);
      $("."+current_class).prop("readonly", false);
    }
  }

  last_class = current_class;
});
input[readonly]{
    background-color: #EEE;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input readonly="" name="txtSkill[]" value="database" class="txt10">
<input readonly="" name="txtSkill[]" value="sql" class="txt10">
<input readonly="" name="txtSkill[]" value="mysql" class="txt10">

<input readonly="" name="txtSkill[]" value="database" class="txt11">
<input readonly="" name="txtSkill[]" value="sql" class="txt11">
<input readonly="" name="txtSkill[]" value="mysql" class="txt11">

<input readonly="" name="txtSkill[]" value="database" class="txt12">
<input readonly="" name="txtSkill[]" value="sql" class="txt12">
<input readonly="" name="txtSkill[]" value="mysql" class="txt12">

<input type="button" value="Edit" name="btnEdit11"id="btnXyz2" class="btn11"/>

关于javascript - 如何在具有相同类的多个文本框上将 readonly 属性设置为 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40863785/

相关文章:

javascript - Angular 中的指令通信抛出错误

javascript - Fabric.js : changing originX in ellipse changes left position

javascript - 使用 jQuery 单击时的替代颜色

javascript - 通过单击任意点上的 div 滚动到特定的 div

PHPExcel 无法保存或下载文件

html - 将背景图像放入带有伪元素的形状中

javascript - Mongoose:向现有对象添加更多项目

javascript - 完美的Scrollbar简单间隙定制

html - 给网站最小浏览器大小

html - 设置中心位置的 margin-left 和 margin-right