将readonly属性添加到所有表单元素

Phi*_*ord 32 html forms jquery

我正在使用jQuery为所有表单元素添加readonly属性,但似乎无法弄清楚如何执行此操作.

这是我正在尝试的:

$('#form1').each( function() { $(this).attr('readonly', true); });
Run Code Online (Sandbox Code Playgroud)

我有一个简单的表单使用label/input来显示表单元素.我也使用tipsy(工具提示插件)以及Formalize(外观和感觉插件)

Kob*_*obi 73

试试这个:

$('#form1 input').attr('readonly', 'readonly');
Run Code Online (Sandbox Code Playgroud)
  • 您可能想要包含更多元素 #form1 input, #form1 textarea, #form1 select
  • 在jQuery中,您通常不需要遍历集合.attr适用于与单个元素相同的集合.
  • 在您的情况下,#form1仅匹配<form>元素,并为该元素each触发一次.要查找所有元素(输入与否),您可以编写#form1 *.

  • 只有一个注释,因为输入无线电不接受"readonly"属性,你必须使用这种元素:$('#form1 input [type = radio]').attr('disabled',true) (4认同)
  • 只是技术性,但"attr('readonly',true)"优于"attr"('readonly','readonly').jQuery的"attr()"方法对DOM属性进行操作,而不是实际的HTML属性和属性"readonly"的值必须是"true"或"false".恰好在javascript中'readonly'转换为true,但最好包括boolean来开始. (3认同)
  • @Phill,如何*精确*它不适合你吗?它什么都不做?返回一个js错误?别的什么? (2认同)

Joh*_*ock 39

这甚至更好地使用输入选择器.另请注意,"只读"仅适用于输入类型的文本和密码以及textarea.它不适用于选择元素,收音机,复选框,按钮.如果要显示但不允许他们键入或单击.尝试使用禁用.

$("#form1 :input").attr("disabled", true);
Run Code Online (Sandbox Code Playgroud)

注意:通过使用禁用它会使输入灰色,选择或textarea但在提交时不会发布此元素.如果你需要它发布让我知道,我可以帮助你.

这是一个演示 http://jsfiddle.net/j5PAn/


小智 5

要获取表单的所有元素:

$.each($('form').serializeArray(), function(index, value){
    $('[name="' + value.name + '"]').attr('readonly', 'readonly');
});
Run Code Online (Sandbox Code Playgroud)