might have done 的反义疑问句为什么是mightn't不是haven't?

问题描述:

might have done 的反义疑问句为什么是mightn't不是haven't?
James was very pleased,if he hadn't spoken to the salesgirl beforehand,he might have spent more money than he could really have afforded,____?
答案是mightn't he might have done 这里不是表对过去的假设推测么?所以不是应该选didn't或者haven't么?哪位好心的大虾给我解释下哈?

If 引导的句子(if he hadn't spoken to the salesgirl beforehand,he...)是一个虚拟语气.当前面有过去完成时时,从句中情态动词后面要跟完成时.
至于最后一个空,除了Need和其他几个有点特殊之外,都用源情态动词的否定+主语的形式.