diff --git a/security/Member.php b/security/Member.php
index 173884897..402b2e9b8 100755
--- a/security/Member.php
+++ b/security/Member.php
@@ -1844,7 +1844,8 @@ class Member_DatetimeOptionsetField extends OptionsetField {
$source = $this->getSource();
foreach($source as $key => $value) {
- $itemID = $this->id() . "_" . ereg_replace('[^a-zA-Z0-9]+', '', $key);
+ // convert the ID to an HTML safe value (colons are not replaced, as they are valid in an ID attribute)
+ $itemID = $this->id() . '_' . preg_replace('/[^\.a-zA-Z0-9\-\_]/', '_', $key);
if($key == $this->value) {
$useValue = false;
$checked = " checked=\"checked\"";
@@ -1856,8 +1857,9 @@ class Member_DatetimeOptionsetField extends OptionsetField {
$extraClass = $odd ? "odd" : "even";
$extraClass .= " val" . preg_replace('/[^a-zA-Z0-9\-\_]/', '_', $key);
$disabled = ($this->disabled || in_array($key, $this->disabledItems)) ? "disabled=\"disabled\"" : "";
-
- $options .= "
\n";
+ $ATT_key = Convert::raw2att($key);
+
+ $options .= "\n";
}
// Add "custom" input field
diff --git a/tests/forms/MemberDatetimeOptionsetFieldTest.php b/tests/forms/MemberDatetimeOptionsetFieldTest.php
index 0f216867f..36e149a49 100644
--- a/tests/forms/MemberDatetimeOptionsetFieldTest.php
+++ b/tests/forms/MemberDatetimeOptionsetFieldTest.php
@@ -47,7 +47,7 @@ class MemberDatetimeOptionsetFieldTest extends SapphireTest {
$field = $this->createDateFormatFieldForMember($this->objFromFixture('Member', 'noformatmember'));
$field->setForm(new Form(new MemberDatetimeOptionsetFieldTest_Controller(), 'Form', new FieldSet(), new FieldSet())); // fake form
$parser = new CSSContentParser($field->Field());
- $xmlArr = $parser->getBySelector('#Form_Form_DateFormat_MMMdyyyy');
+ $xmlArr = $parser->getBySelector('#Form_Form_DateFormat_MMM_d__yyyy');
$this->assertEquals('checked', (string) $xmlArr[0]['checked']);
}
@@ -55,7 +55,7 @@ class MemberDatetimeOptionsetFieldTest extends SapphireTest {
$field = $this->createTimeFormatFieldForMember($this->objFromFixture('Member', 'noformatmember'));
$field->setForm(new Form(new MemberDatetimeOptionsetFieldTest_Controller(), 'Form', new FieldSet(), new FieldSet())); // fake form
$parser = new CSSContentParser($field->Field());
- $xmlArr = $parser->getBySelector('#Form_Form_TimeFormat_hmmssa');
+ $xmlArr = $parser->getBySelector('#Form_Form_TimeFormat_h_mm_ss_a');
$this->assertEquals('checked', (string) $xmlArr[0]['checked']);
}
@@ -65,7 +65,7 @@ class MemberDatetimeOptionsetFieldTest extends SapphireTest {
$field = $this->createDateFormatFieldForMember($member);
$field->setForm(new Form(new MemberDatetimeOptionsetFieldTest_Controller(), 'Form', new FieldSet(), new FieldSet())); // fake form
$parser = new CSSContentParser($field->Field());
- $xmlArr = $parser->getBySelector('#Form_Form_DateFormat_MMddyyyy');
+ $xmlArr = $parser->getBySelector('#Form_Form_DateFormat_MM_dd_yyyy');
$this->assertEquals('checked', (string) $xmlArr[0]['checked']);
}