Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在IE6中文本字段会无缘无故地被禁用?_Javascript_Internet Explorer 6 - Fatal编程技术网

Javascript 为什么在IE6中文本字段会无缘无故地被禁用?

Javascript 为什么在IE6中文本字段会无缘无故地被禁用?,javascript,internet-explorer-6,Javascript,Internet Explorer 6,我在这个巨大的JSF页面上做了一些更改,这个页面也充满了Javascript。我不知道是什么变化导致了问题的发生 问题是:在执行一些Javascript之后,页面中的所有文本字段都变成只读。这个问题在IE7和Firefox中都没有出现。我已经调试了所有的javascript,没有抛出错误!而且没有任何东西告诉字段成为只读,因为它在IE7中工作正常 不确定问题是什么,可能与CSS有关吗?还是Javascript?为什么它只发生在IE6上 注意:“不支持IE6不是一个选项”嗯。。。不支持IE6??;

我在这个巨大的JSF页面上做了一些更改,这个页面也充满了Javascript。我不知道是什么变化导致了问题的发生

问题是:在执行一些Javascript之后,页面中的所有文本字段都变成只读。这个问题在IE7和Firefox中都没有出现。我已经调试了所有的javascript,没有抛出错误!而且没有任何东西告诉字段成为只读,因为它在IE7中工作正常

不确定问题是什么,可能与CSS有关吗?还是Javascript?为什么它只发生在IE6上


注意:“不支持IE6不是一个选项”

嗯。。。不支持IE6??;)

建议禁用CSS并查看问题是否消失。不过,我不知道有任何CSS标记可以禁用字段

除此之外,调试是您唯一的选择。删除所有的.js,然后一行一行地添加它,直到有东西断开为止


如果没有看到一些代码,我们可能很难帮助您。

虽然IE在某些情况下可能会有bug,但我很确定这不是IE bug

如何判断字段是只读的?您是否得到任何光学确认,或者只是您无法再单击它们?在这种情况下,我敢打赌这是一个不可见的DIV或其他布局元素,由于CSS设置,它会在输入字段上方挤压自己

尝试查找是否是布局问题


如果它们在
中确实被禁用,则需要显示一些JavaScript或(更好的)链接。

查看页面的HTML是否在这些输入元素上设置了“disabled”属性。如果是这样,则在页面加载后,将使用javascript来启用元素。这是一种常见的技术,可以防止用户在加载所有脚本之前过早地尝试与页面交互

如果是这样的话,那么您可能已经打破了脚本识别需要启用哪些元素的方式。因为这只发生在IE6上,所以听起来脚本可能正在执行一些深奥的DOM导航,这是由于标记或CSS的更改而中断的


不幸的是,您必须通过还原到以前的版本进行调试,直到您确定您所做的更改破坏了页面。

根据此处的其他答案以及您对这些问题的一些评论,您的页面中似乎有一个JavaScript函数,用于设置启用或禁用元素

为了提供帮助,我们必须查看您的代码。不过,你可以自己做一些事情来解决你的问题:

  • 查找将页面中的元素设置为禁用或启用的函数(或任何函数)
  • 根据您的开发环境,有不同的方法来实现这一点,但不知何故在函数中添加了一个断点
  • 加载页面
  • 无论何时调用该函数,代码执行都将在该函数处停止。每当它停止时,确保它应该被调用(并观察调用堆栈)

  • 最终,你会在一个你不应该碰到的地方碰到那个断点。查看调用堆栈,看看是什么导致了它(哪个函数导致了对该函数的调用)。

    仍然不确定该构建发生了什么,但我确定的是,我所做的所有Ajax修改都是导致该问题的原因

    情况是这样的:

  • 填充文本字段1(点击getValues1,然后点击验证Ajax)
  • 填充文本字段2(点击getValues2,然后同时点击两个值的validate)
  • 填充文本字段3(点击getValues3,然后在所有三个值上点击validate)
  • 第四次也是同样的情况。这个页面是由一个JSF新手创建的,非常庞大。我花了很长时间重构它。但是现在好多了,每个文本字段仍然有一个getValues Ajax,但是我没有在获取所有值后验证它们,而是通过发送所选的条件在服务器上过滤允许的值

    现在的情况是:

  • 填充文本字段1(点击获取值1)
  • 填充文本字段2(点击值为1的getValues2 Ajax,只获取允许的值)
  • 。。。等
  • 问题似乎是Ajax赛车的状况,在某个时刻IE6被挂起或陷入僵局,我不确定


    经验教训:“重构一次可能需要一周的时间,但没有每个问题都需要更长的时间”

    听起来你需要“取消制作”你的更改,然后逐个添加它们,直到找到破坏它的更改。祈祷它不会因为两个更改的组合而破坏。默认情况下,你的字段是启用的(在html中)还是禁用的?如果您正在使用脚本手动启用字段,那么这将为您提供一个很好的开始搜索的位置。查找和禁用页面上的每个控件并不是偶然发生的事情,尤其是偶然发生的。页面非常大,非常复杂,一半字段开始禁用,另一半字段启用。但是随着页面中的Ajax点击量的增加,一切都可能发生变化。你能解释为什么它在IE7和FF上工作得很好吗?将检查不可见的div,但我无法共享代码,抱歉,这是一个Intranet应用程序。输入是否已禁用(=变灰)或不可读取?我知道如何使用Java进行调试,但您是否有任何Eclipse插件来调试Javascript?抱歉。我是一名.net开发人员,所以我对eclipse的了解很少。一个简单的谷歌搜索发现了这些:和