mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
htmltextarea: Fixed some value_changed issues
Also modified tests/html/textarea.html to allow for the testing of the textarea's dirty value flag.
This commit is contained in:
parent
4d0a6a6bd6
commit
a5c0bb708d
2 changed files with 24 additions and 3 deletions
|
@ -148,7 +148,7 @@ impl<'a> HTMLTextAreaElementMethods for JSRef<'a, HTMLTextAreaElement> {
|
||||||
// if the element's dirty value flag is false, then the element's
|
// if the element's dirty value flag is false, then the element's
|
||||||
// raw value must be set to the value of the element's textContent IDL attribute
|
// raw value must be set to the value of the element's textContent IDL attribute
|
||||||
if !self.value_changed.get() {
|
if !self.value_changed.get() {
|
||||||
self.SetValue(node.GetTextContent().unwrap());
|
self.reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,7 +159,9 @@ impl<'a> HTMLTextAreaElementMethods for JSRef<'a, HTMLTextAreaElement> {
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/forms.html#dom-textarea-value
|
// https://html.spec.whatwg.org/multipage/forms.html#dom-textarea-value
|
||||||
fn SetValue(self, value: DOMString) {
|
fn SetValue(self, value: DOMString) {
|
||||||
|
// TODO move the cursor to the end of the field
|
||||||
self.textinput.borrow_mut().set_content(value);
|
self.textinput.borrow_mut().set_content(value);
|
||||||
|
self.value_changed.set(true);
|
||||||
self.force_relayout();
|
self.force_relayout();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -255,7 +257,7 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLTextAreaElement> {
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
if child.is_text() {
|
if child.is_text() && !self.value_changed.get() {
|
||||||
self.reset();
|
self.reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,25 @@
|
||||||
<html>
|
<html>
|
||||||
<head></head>
|
<head></head>
|
||||||
<body>
|
<body>
|
||||||
<textarea name="textarea">Write something here
|
<form>
|
||||||
|
<textarea id="textarea">Write something here
|
||||||
and maybe here</textarea>
|
and maybe here</textarea>
|
||||||
|
<button id=setcontent type=button>setContent</button>
|
||||||
|
<button id=setvalue type=button>setValue</button>
|
||||||
|
<input type=reset>
|
||||||
|
<script>
|
||||||
|
var text_area = document.getElementById("textarea");
|
||||||
|
var set_c = document.getElementById("setcontent");
|
||||||
|
var value = document.getElementById("setvalue");
|
||||||
|
var x = 0;
|
||||||
|
|
||||||
|
set_c.addEventListener("click", function () {
|
||||||
|
text_area.textContent = x;
|
||||||
|
x++;
|
||||||
|
});
|
||||||
|
|
||||||
|
value.addEventListener("click", function () {
|
||||||
|
text_area.value = "new value!";
|
||||||
|
});
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue