People should have taken steps to stop this happening,but they___

问题描述:

People should have taken steps to stop this happening,but they___
a.didn't b.haven't
选A B怎么排除的

should have taken是虚拟语态,证明了这个stop this happening并没有发生,所以后面要用过去时.
haven't 首先不能和虚拟语态配合,其次,既然是虚拟语态了,所指的动作(take steps)一定是说话之前发生的,这就限定了时态,不可能是现在(完成)时.