jquery 锁定HTML选择元素,允许在提交时发送值

w1jd8yoj  于 2023-02-08  发布在  jQuery
关注(0)|答案(7)|浏览(134)

我在一个复杂的订单上有一个选择框(用于客户字段),当用户开始向订单添加行时,不应允许他们更改客户选择框(除非删除所有行)。
我的第一个想法是可以使用disabled属性,但是当框被禁用时,所选的值不再传递给目标。
当这个问题出现的时候,一个开发人员通过循环遍历所有的选项并禁用除了选中的选项之外的所有选项来解决这个问题,并且确实将值传递给了目标,我们一直在使用它。但是现在我正在寻找一个合适的解决方案,我不想循环遍历所有的选项,因为数据正在扩展,并且它开始引入性能问题。
我不希望在点击提交按钮时启用此/所有元素。
我如何锁定输入,同时保持选中的选项并将该值传递给目标脚本?如果可能,我更喜欢非JavaScript解决方案,但如果需要,我们将运行jQuery 1.4.2,以便可以使用。

    • 编辑**

我尝试过使用readonly属性,但收效甚微,下面是我使用的jQuery代码:

$('.abc').each(function(element) {
    $(this).attr('readonly','readonly');
});

当用Firebug检查元素时,只读属性已经被设置,但是我仍然可以在选择框中更改值?!

5cg8jx4n

5cg8jx4n1#

这是可行的:

$('.abc :not(:selected)').attr('disabled','disabled');

jQuery仍然会在幕后循环遍历元素,但我非常怀疑是否会出现性能问题,除非您的select包含数千个元素(在这种情况下,可用性问题将远远超过性能问题)。

a1o7rhls

a1o7rhls2#

这个很好用

<select disabled="true">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">thre</option>
</select>
62o28rlo

62o28rlo3#

在表单中添加一个隐藏字段,并在提交时从select中获取值并将其放置在隐藏字段的值中
根据HTML规范,select标记不支持readonly

gcmastyq

gcmastyq4#

元素不接受readonly属性。readonly是修复此问题的 Package 。
试试这个:
https://github.com/haggen/readonly

yr9zkbsy

yr9zkbsy5#

“select”没有只读属性。它只有disabled属性。
http://www.w3schools.com/TAGS/att_select_disabled.asp
所以你最好的就是:

$('.abc').each(function(element) {
    $(this).attr('disabled','disabled');
});

高温加热

rhfm7lfc

rhfm7lfc6#

我有一个想法,对我来说很实用:
在我的情况下,当用户在会计系统的表格上的下拉菜单中选择选项(帐户)时,例如某种“费用,"我知道该选项可能不是“贷记,”而只是“借记,”选择会计操作(借记/贷记)的另一个下拉菜单将这些下拉菜单改变为“借记.”
然后,我“锁定”(使用“disabled=true”)这些最后的“下拉”在“借记”选项。
这些时候我想到的问题和你的很相似禁用下拉元素后,我无法再在目标中接收它。
所以,我所做的是:
1 -更改了第二个下拉列表中的选项,正如我所说:

document.getElementById("operation").value = "D";

'2 -禁用该下拉列表:

document.getElementById("operation").disabled = true;

然后,“猫盐”:
3a-在“FORM”元素中添加了“onsubmit”

onsubmit = "validForm()"

3b -在我的[java-script]文件中,我添加了[“valid-Form”]函数:

function validForm()
{
    document.getElementById("operation").disabled = false;
}

瞧!

2eafrhcq

2eafrhcq7#

禁用任何选择的简单方法是禁用鼠标交互。
例如:

<select id="complaint_status" name="complaint_status" class="disabledSelect" value="Pending">
<option value="Pending" selected>Pending</option>
<option value="Complete">Complete</option></select>

CSS

.disabledbutton {
pointer-events: none;
opacity: 0.4;}

选择的值将被提交。希望它能起作用!!

相关问题