(bug 40585) Don't drop 'step="any"' in HTML input fields.
The default value for "step" is "1" which effectively bans any decimal number from being entered into an 'type="number"' field and makes HTMLFloatField unusable. Change-Id: I103fd4047814a7fb0dfdc174f36badd5b660b7a4
This commit is contained in:
parent
25c0031c08
commit
6dc4039270
2 changed files with 19 additions and 1 deletions
|
|
@ -476,7 +476,13 @@ class Html {
|
|||
// server-side validation. Opera is the only other implementation at
|
||||
// this time, and has ugly UI, so just kill the feature entirely until
|
||||
// we have at least one good implementation.
|
||||
if ( in_array( $key, array( 'max', 'min', 'pattern', 'required', 'step' ) ) ) {
|
||||
|
||||
// As the default value of "1" for "step" rejects decimal
|
||||
// numbers to be entered in 'type="number"' fields, allow
|
||||
// the special case 'step="any"'.
|
||||
|
||||
if ( in_array( $key, array( 'max', 'min', 'pattern', 'required' ) ) ||
|
||||
$key === 'step' && $value !== 'any' ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -605,4 +605,16 @@ class HtmlTest extends MediaWikiTestCase {
|
|||
return $ret;
|
||||
}
|
||||
|
||||
public function testFormValidationBlacklist() {
|
||||
$this->assertEmpty(
|
||||
Html::expandAttributes( array( 'min' => 1, 'max' => 100, 'pattern' => 'abc', 'required' => true, 'step' => 2 ) ),
|
||||
'Blacklist form validation attributes.'
|
||||
);
|
||||
$this->assertEquals(
|
||||
' step=any',
|
||||
Html::expandAttributes( array( 'min' => 1, 'max' => 100, 'pattern' => 'abc', 'required' => true, 'step' => 'any' ) ),
|
||||
'Allow special case "step=any".'
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue