首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jquery支柱函数不像预期的那样工作。

Jquery支柱函数不像预期的那样工作。
EN

Stack Overflow用户
提问于 2012-09-12 12:03:45
回答 3查看 16.5K关注 0票数 3

我试图基于某些计算并使用jquery prop函数启用/禁用一些隐藏字段,下面是代码

代码语言:javascript
运行
复制
function enableSelectedFieldsData(count, mapKey, index) {
    $("#code_" + mapKey + "_" + index).prop("disabled", false);
    $("#description_" + mapKey + "_" + index).prop("disabled", false);
    $("#crossRefrence_" + mapKey + "_" + index).prop("disabled", false);
    $("#image_" + mapKey + "_" + index).prop("disabled", false);
    $("#price_" + mapKey + "_" + index).prop("disabled", false);
    // disable all other fields
    for (var i = 0; i < count; i++) {
        if (i != index) {
            $("#code_" + mapKey + "_" + i).prop("disabled", true);
            $("#description_" + mapKey + "_" + i).prop("disabled", true);
            $("#crossRefrence_" + mapKey + "_" + i).prop("disabled", true);
            $("#image_" + mapKey + "_" + i).prop("disabled", true);
            $("#price_" + mapKey + "_" + i).prop("disabled", true);
        }
    }
}

最初,我正在为所有字段设置disable=true,并且基于选择,我试图在禁用其他字段的同时启用所选字段,因为据我所知,禁用字段从未在提交表单时提交给服务器,但在我的示例中,它们是被提交的。

在使用firebug进行检查时,我发现非选定项的禁用字段值被设置为"" (类似于disable="" )。

我不知道我在哪里弄错了,这方面的任何帮助或指点都会很有帮助。

编辑

我已从生成的HTML中取出相关部分,并将其放置在小提琴中,请看一看。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-12 12:16:52

你们有可用的道具吗?

prop()是在jQuery 1.6中添加的,其用法如下:

代码语言:javascript
运行
复制
$("input").prop('disabled', true);
$("input").prop('disabled', false);

如果您使用的是jQuery 1.5.x或更低版本,您可以使用attr()来代替jQuery站点中的这个常见问题-如何启用/禁用表单元素

代码语言:javascript
运行
复制
// Disable #x
$('#x').attr('disabled', true);

// Enable #x
$('#x').attr('disabled', false);

// -- or --

// Disable #x
$("#x").attr('disabled', 'disabled');

// Enable #x
$("#x").removeAttr('disabled');

假设您使用的是jQuery 1.6或更高版本

你的语法看起来很好。我猜你的问题很可能是不正确的选择器。

要验证选择器包含您期望的元素引用,请执行以下操作:

代码语言:javascript
运行
复制
 // output the selector to the console
console.log($("#code_" + mapKey + "_" + index));

如果您在浏览器的调试控制台中看到一个元素,您将看到一个有效的选择器,如果您看到的是[],则选择器无效。

或者,您可以使用length属性检查它,并发出警告:

代码语言:javascript
运行
复制
// alert out the length of the jQuery selector
alert($("#code_" + mapKey + "_" + index).length);

如果看到0,则选择器无效,如果看到1或更多,则选择器是正确的。

票数 8
EN

Stack Overflow用户

发布于 2012-09-12 12:44:53

HTML中的disabled属性与(大多数)其他属性有点不同,因为它的存在就足以禁用元素。

代码语言:javascript
运行
复制
<input type="text" name="test" disabled>
<input type="text" name="test" disabled="">
<input type="text" name="test" disabled="true">
<input type="text" name="test" disabled="false">

这些元素都将被禁用(是的,甚至是带有disabled="false"的元素),因为禁用的属性存在于HTML中。如果您在Firebug的HTML选项卡中看到调用后的disabled=""

代码语言:javascript
运行
复制
.prop('disabled', true);

这就是正确的行为,元素是禁用的。尽管禁用了这些值,但还有另一个原因导致这些值仍然被提交。

票数 1
EN

Stack Overflow用户

发布于 2020-06-26 13:07:07

我发现.prop(“禁用”,true/false)只处理输入元素类型(即按钮、复选框等)。我试着在锚标签上叫它,但它不起作用。我最后所做的是使用.attr(“禁用”,true)和.removeAttr(“禁用”)来切换禁用的属性,因为它可以在所有html元素上工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12387786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档