我已经对此有所了解,但我似乎无法找到关于不同浏览器如何处理事物的任何信息.
再次编辑:
当然这是标准的东西?我不能重新发明轮子?? !! 用户填写表单并向他显示(使用PHP,但这不重要).你把它作为确认显示给他,所以他不应该再次尝试改变它......
请参阅相关问题,如何将表单列表框显示为只读或禁用所选索引? 它的要点是我想执行一项非常常见的任务......
有两种形式 - HTML中的提交表单和PHP中的处理和确认表单.
第一种形式在许多控件中提供选择,第二种形式在输入中进行验证,如果有效,则再次使用确认消息显示输入表单.在第二个表单中,所有字段必须是静态的.
从我所看到的,一些表单控件可以是,readonly而且一切都可以disabled,不同之处在于您仍然可以选择只读字段.
无论如何,不是按字段进行此字段,而是将整个表单标记为只读/禁用/静态,以便用户不能更改任何控件?
编辑:感谢所有JS解决方案(我有+1),但我只能使用服务器端解决方案.对不起,我本来应该这么说.
[更新]七年后仍然得到答案;-)我最后做的是从PHP生成表单,并为每个字段写一个readonly或disabled属性(适合控件的类型),设置为根据全局变量的真或假.
当我使用以下任何代码时,select元素看起来像禁用,但选择不在服务器上传递:我想到readonly要使用,但我不知道或是否会解决问题.任何帮助深表感谢.
$('#selectID').prop('disabled',true);
$('#selectID').prop('disabled','disabled');
$('#selectID').attr('disabled',true);
$('#selectID').attr('disabled','disabled');
Run Code Online (Sandbox Code Playgroud) 我有一个bootstrap选择,readonly="true"但我仍然可以更改所选的选项.
我需要这个disabled="true"行为,但是当我使用它时,select不会被提交.
我需要2的组合,所选的选项无法更改,但必须提交选择.
我可以使用隐藏字段,但我希望有一个更简单的解决方案.
是否有HTML选择字段的属性或技术等同 readOnly="true"于HTML输入?
我有一个表单选择字段我想要禁用,但仍然在表单发布时传递.如果这是一个HTML输入,我会做这样的事情
$('select_id').setAttribute('readOnly', 'true');
Run Code Online (Sandbox Code Playgroud)
并且浏览器会将该字段呈现为不可编辑的,但它的值仍将传递给后端.我想要一个类似的HTML选择,但做以下
$('#select_id').setAttribute('readOnly', 'true');
Run Code Online (Sandbox Code Playgroud)
不起作用.该属性已成功添加到DOM,但浏览器仍将其呈现为可选.
我意识到我可以做到以下几点
$('#input_id').disabled();
Run Code Online (Sandbox Code Playgroud)
但是当一个字段被禁用时,它的值不会传递给后端.
我想要一种方法来禁用这个选择字段,但仍然传入后端.
(示例使用Prototype JS,但我对任何通用解决方案感兴趣)
我在设计的网站的联系表单中有以下代码:
<select id="Category" name="Category">
<option value="0" selected="selected" disabled>Category</option>
<option value="1">General Info</option>
<option value="2">Booking</option>
<option value="3">Auditions</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我想设置菜单,使用户不能离开category作为选定的选项.有没有办法用HTML做到这一点?如果没有,我将如何使用JavaScript?
谢谢
从下拉列表中选择值时,如果所选值等于某个值,我希望下拉列表更改为只读,我该怎么做?
HTML:
<select id="s_id">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option></select>
Run Code Online (Sandbox Code Playgroud)
脚本:
$(document).ready(function () {
$("#s_id").change(function () {
var x = $(this).val();
//alert("something's changed");
alert($(this).val());
if (x === opel) {
alert("iff only.....");
$(this).attr("readOnly", "true");
}
});
});
Run Code Online (Sandbox Code Playgroud)
我想模拟输入禁用.我想在输入中没有更改值,但是这个值应该使用带有FORM的POST发送.
<input class="dis" type="text" disabled="disabled" value="111">
<input class="no" type="text">
<input class="dis" type="text" disabled="disabled" value="333">
Run Code Online (Sandbox Code Playgroud)
我也可以使用CSS和jQuery,但是如何?
我想将下拉设置为只读.为此,我使用代码readonly="readonly".但它不能在asp.netmvc4中工作.我可以解决这个问题吗?请帮助
我想禁用某些文本字段和下拉列表,以防止用户更改其值.但每当我尝试时,它都不会收集/获取特定禁用文本字段或下拉列表的数据.
这是我显示下拉列表的视图.它在一个for循环中:
echo $form->field($model1[$i], 'earning_item_id')->widget(Select2::classname(), [
'data' => $earningslistData,
'options' => ['placeholder' => '', 'prevOptionID' => $model1[$i]->earning_item_id, 'prevOptionName' => $earningslistData[$model1[$i]->earning_item_id],
"name" => "EarningDetails[".$i."][earning_item_id]", "row_count1" => $i],
//'disabled' => true,
'pluginOptions' => [
'allowClear' => true,
'label' => false
]
]);
Run Code Online (Sandbox Code Playgroud)
以下是它们在不禁用它们的情况下的样子:

然后,当我保存它时,它看起来像这样:

但是,当我禁用下拉列表时,它会给我这个:

我认为全名来自我的模型,但我不知道为什么:
public function getFullName()
{
return $this->user ? $this->user->fname . ' ' . $this->user->lname : 'Full Name';
}
Run Code Online (Sandbox Code Playgroud)
禁用文本字段时,它会一样:
echo $form->field($model, 'user_id')->widget(Select2::classname(), [
'data' => $listData,
'options' => ['placeholder' => 'Select a Staff'], …Run Code Online (Sandbox Code Playgroud) 在我的组合框中某些条件我禁用了组合框.但是我想访问控制器中的值.现在我无法得到它.实际上没有工作
<select class="select2" id="branch" name="branch" required="required" onchange="getDept();" <?php if(!empty($detailone)){?> disabled="true" <?php } ?>>
Run Code Online (Sandbox Code Playgroud) html ×8
javascript ×6
jquery ×5
css ×2
php ×2
yii2 ×2
dom ×1
prototypejs ×1
readonly ×1
select ×1