我想显示一个单选按钮,有它的值提交,但根据情况,它是不可编辑的。Disabled不起作用,因为它不提交值(或者它是否提交?),并且它使单选按钮变灰。只读是我真正想要的,但出于某种神秘的原因,它不起作用。
我是否需要使用一些奇怪的技巧来实现只读以达到预期的效果?我应该用JavaScript写吗?
顺便提一下,有人知道为什么只读在单选按钮中不起作用,而在其他输入标签中却起作用吗?这是HTML规范中不可理解的遗漏之一吗?
我想显示一个单选按钮,有它的值提交,但根据情况,它是不可编辑的。Disabled不起作用,因为它不提交值(或者它是否提交?),并且它使单选按钮变灰。只读是我真正想要的,但出于某种神秘的原因,它不起作用。
我是否需要使用一些奇怪的技巧来实现只读以达到预期的效果?我应该用JavaScript写吗?
顺便提一下,有人知道为什么只读在单选按钮中不起作用,而在其他输入标签中却起作用吗?这是HTML规范中不可理解的遗漏之一吗?
当前回答
I have a lengthy form (250+ fields) that posts to a db. It is an online employment application. When an admin goes to look at an application that has been filed, the form is populated with data from the db. Input texts and textareas are replaced with the text they submitted but the radios and checkboxes are useful to keep as form elements. Disabling them makes them harder to read. Setting the .checked property to false onclick won't work because they may have been checked by the user filling out the app. Anyhow...
onclick="return false;"
工作就像一个“禁用”无线电和复选框事实上的魅力。
其他回答
尝试禁用属性,但我认为您不会得到单选按钮的值。 或者像这样设置图像:
<img src="itischecked.gif" alt="[x]" />radio button option
致以最亲切的问候。
我正在使用一个JS插件,样式复选框/单选输入元素,并使用以下jQuery来建立一个“只读状态”,其中底层值仍然发布,但输入元素似乎无法访问用户,这是我相信我们将使用只读输入属性的预期原因…
if ($(node).prop('readonly')) {
$(node).parent('div').addClass('disabled'); // just styling, appears greyed out
$(node).on('click', function (e) {
e.preventDefault();
});
}
我通过只禁用未选中的单选按钮来伪造单选按钮的只读。它可以防止用户选择不同的值,并且选中的值将始终在提交时发布。
使用jQuery使只读:
$(':radio:not(:checked)').attr('disabled', true);
这种方法也适用于将选择列表设置为只读,只是需要禁用每个未选择的选项。
Disabled作用于单个单选按钮(不是整个集合)。 如果您正在使用PHP,并且在浏览器中加载页面之前,服务器上已经知道您的情况,那么您可以使用这个非常简单的解决方案。
<php $chcky= (condition) ? 'checked' : 'disabled';?>
<php $chckn= (condition) ? 'checked' : 'disabled';?>
<input type="radio" name="var" value="Yes" <?php echo $chcky?>></input>
<input type="radio" name="var" value="No" <?php echo $chckn?>></input>
我在响应表单提交的页面上使用它。
JavaScript的方式-这对我很有用。
<script>
$(document).ready(function() {
$('#YourTableId').find('*').each(function () { $(this).attr("disabled", true); });
});
</script>
原因:
$('#YourTableId').find('*') ->返回所有标签。 $ (' # YourTableId ');(“*”)。Each (function () {$(this)。attr(“禁用”,真正的);}); 遍历在此捕获的所有对象并禁用输入标记。
分析(调试):
Form:radiobutton在内部被认为是一个“输入”标签。 像上面的函数()一样,如果你尝试打印document.write(this.tagName); 只要在标签中找到单选按钮,它就返回一个输入标签。
因此,上面的代码行可以更优化的单选按钮标签,通过输入替换*: $ (' # YourTableId ');(“输入”)。Each (function () {$(this)。attr(“禁用”,真正的);});