在Chrome浏览器中,jQuery的.attr("disabled", "disabled")无法正常工作。
在Chrome浏览器中,jQuery的.attr("disabled", "disabled")无法正常工作。
不确定为什么这个不起作用。\n当用户点击我的应用程序的“编辑”按钮时,禁用的文本字段将变为可编辑状态:\n
$("#bewerken").click(function(e) { $("input[disabled='disabled']").removeAttr('disabled'); });
\n然后,当用户保存时,我希望再次禁用文本字段;我将以下代码绑定到保存按钮:\n
$("#save_school_changes").click(function(e) { //具体操作 $.ajax({ type: "POST", url: "/school/save_changes", data: { //具体数据 }, success: function(data) { $("#feedback_top").html("" + data['message'] + "").slideDown('slow').delay(2000).slideUp(); $("input[type='text']").attr('disabled', 'disabled'); } }); e.preventDefault(); });
\n据我所知,这应该再次禁用文本字段。然而,在Chrome中似乎没有起作用。在Firefox中可以正常工作。我还没有机会在IE或Safari中进行测试。是否有任何方法使其在Chrome中也能正常工作?非常感谢!
问题出现的原因是在Chrome浏览器中,使用jQuery的.attr()方法将disabled属性设置为"disabled"时,无法起作用。解决方法是改用.removeAttr()方法来移除disabled属性,然后使用.attr()方法将其重新设置为"disabled"。在ajax成功后,使用.attr()方法将所有type为text的input元素的disabled属性设置为true。在提交表单之前,确保先移除disabled属性,否则该数据将无法提交。如果需要在更改之前提交数据,则需要使用readonly属性。需要注意的是,如果要通过get或post方式提交数据,应该使用readonly属性。
问题出现的原因是在Chrome浏览器中,使用jQuery的.attr方法将disabled属性设置为disabled时,可能无效。解决方法是使用.addClass方法添加一个自定义的CSS类,并在该类中设置pointer-events为none和cursor为default,以达到禁用input元素的效果。以下是整理后的文章:
在Chrome浏览器中,使用jQuery的.attr方法将disabled属性设置为disabled时可能会无效。但是,我们可以采用其他方法来解决这个问题。
最开始,我尝试了以下代码来禁用input元素:
$('input:text').attr("disabled", 'disabled');
然而,这种方法在Chrome浏览器中并没有起作用。于是我继续寻找解决方案。
最终,我找到了一个有效的解决办法。我使用了.addClass方法来添加一个自定义的CSS类,并在该类中设置了pointer-events为none和cursor为default。这样就能达到禁用input元素的效果。
下面是我添加的代码:
$('input:text').addClass("notactive");
此外,我还需要在HTML中添加以下样式:
<style type="text/css"> .notactive { pointer-events: none; cursor: default; } </style>
通过这种方式,我成功地解决了在Chrome浏览器中使用jQuery的.attr方法将disabled属性设置为disabled无效的问题。
希望这篇文章能够帮助到遇到类似问题的人们。