I used the SO questions Gray out image with CSS? and Disable link using css to construct a css wrapper that would grey out a button, and also prevent clicks to it. I tried first in a separate css file, but this example uses inline css styles and gives the same result. Here are 4 buttons:
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<form>
<span style="opacity:0.4; pointer-events: none;">
<input type='submit' value='Span Inside' />
</span>
</form>
<form>
<div style="opacity:0.4; pointer-events: none;">
<input type='submit' value='Div Inside' />
</div>
</form>
<div style="opacity:0.4; pointer-events: none;">
<form>
<input type='submit' value='Div Outside' />
</form>
</div>
<span style="opacity:0.4; pointer-events: none;">
<form>
<input type='submit' value='Span Outside' />
</form>
</span>
</body>
</html>
All four buttons in this example do not respond to clicks in any of Firefox 15.0.1, Safari 6.0 or Chrome 21.0.1180.89, which is what I expected.
In Firefox, all 4 buttons are greyed out, opacity 0.4, which is what I expected.
In Safari and Chrome, the first 3 buttons are greyed out, but the 4th button, with the span elements outside the form elements, has opacity 1.0.
Is there a bug in the browsers, or is it in in my understanding, please?