Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何重构jquery;根据复选框选择“使只读”;_Jquery_Input_Refactoring_Readonly - Fatal编程技术网

如何重构jquery;根据复选框选择“使只读”;

如何重构jquery;根据复选框选择“使只读”;,jquery,input,refactoring,readonly,Jquery,Input,Refactoring,Readonly,下午好 星期五请大家吃点东西 我有以下jquery功能,它根据和另一个输入的选择使输入只读: 这很好,很好,我希望它能正常工作 然而,在我的情况下,我有大约13个“checkbox1a”及其相关的checkbox1b和textbox1 正如您从脚本中看到的,我可以复制此代码,但我们都知道,复制和粘贴很糟糕(尽管在周五下午有上诉),因此我想知道如何着手攻击此代码,以便尽可能减少代码,但实现相同的结果 非常感谢任何提示。您可以为所有这些内容编写一个单击事件 var $tr = $(this).cl

下午好

星期五请大家吃点东西

我有以下jquery功能,它根据和另一个输入的选择使输入只读:

这很好,很好,我希望它能正常工作

然而,在我的情况下,我有大约13个“checkbox1a”及其相关的checkbox1b和textbox1

正如您从脚本中看到的,我可以复制此代码,但我们都知道,复制和粘贴很糟糕(尽管在周五下午有上诉),因此我想知道如何着手攻击此代码,以便尽可能减少代码,但实现相同的结果


非常感谢任何提示。

您可以为所有这些内容编写一个单击事件

var $tr = $(this).closest('tr');

// access checkbox b inside it

  $tr.find('[id*=checkbox][id$="b"]').attr('disabled', 'disabled');

// access textbox  inside it

  $tr.find('input[type="text"]').attr('disabled', 'disabled');


您可以编写一个单击事件,以这种方式处理所有复选框单击事件

更好的方法是将类赋予复选框,而不是将id赋予复选框

复选框a-class=“checkboxa” 复选框b-class=“checkboxb” textbox-class=“textbox”


这将使您的代码更干净,更易于处理

您可以将一次单击事件写入所有这些

var $tr = $(this).closest('tr');

// access checkbox b inside it

  $tr.find('[id*=checkbox][id$="b"]').attr('disabled', 'disabled');

// access textbox  inside it

  $tr.find('input[type="text"]').attr('disabled', 'disabled');


您可以编写一个单击事件,以这种方式处理所有复选框单击事件

更好的方法是将类赋予复选框,而不是将id赋予复选框

复选框a-class=“checkboxa” 复选框b-class=“checkboxb” textbox-class=“textbox”


这将使您的代码更干净,更易于处理

只需添加一些类并执行一点jQuery巫术。再见


可以不向禁用/启用的控件添加类,但使用类,您可以对启用/禁用的内容进行更精细的控制。

只需添加一些类并执行一点jQuery Voodo。再见


可以不向禁用/启用的控件添加类,但使用类,您可以对启用/禁用的内容进行更精细的控制。

您可以将所有内容合并到一个更改事件中-假设页面上只有这些复选框。。或者你可以给他们一个类来选择他们

$('input[type=checkbox]').change(function(){
   var $this = $(this); 
   var $inputs = $this.closest('tr').find('input'); // get relative inputs
   $inputs.not($this).prop('disabled',$inputs[0].checked);  
   // disable fields if first checkbox is checked
});

也是设置disabled属性的正确方法(jQuery 1.6+)。这是来自jQuery文档的

应使用.prop()方法来设置禁用和选中,而不是.attr()方法


您可以将所有内容合并到一个更改事件中—假设页面上只有这些复选框。。或者你可以给他们一个类来选择他们

$('input[type=checkbox]').change(function(){
   var $this = $(this); 
   var $inputs = $this.closest('tr').find('input'); // get relative inputs
   $inputs.not($this).prop('disabled',$inputs[0].checked);  
   // disable fields if first checkbox is checked
});

也是设置disabled属性的正确方法(jQuery 1.6+)。这是来自jQuery文档的

应使用.prop()方法来设置禁用和选中,而不是.attr()方法


我刚刚解决了类似的问题。我是这样处理的:

在复选框和文本框中添加一个类,然后将ID的索引移动到字符串的末尾(使jquery变得更容易),因此它可以如下所示:

这是我的建议


我刚刚解决了类似的问题。我是这样处理的:

在复选框和文本框中添加一个类,然后将ID的索引移动到字符串的末尾(使jquery变得更容易),因此它可以如下所示:

这是我的建议