0

刚开始使用 dartlang 并稍微扩展了项目示例。似乎元素类的焦点方法不起作用,或者我没有正确使用它。想要通过“关注”“错误”来获得验证行为。这是我的代码...

#import('dart:html');

num rotatePos = 0;

var nameField;

const DEFAULT_VALUE = "Click here!";

void main() {

  query("#text").text = DEFAULT_VALUE;

  query("#submit").on.click.add(rotateText);
}

void rotateText(Event event) {
  rotatePos += 360;

  nameField = query("#name");

  var textElement = query("#text");

  String insertedName = nameField.value;

  textElement.style.transition = "1s";
  textElement.style.transform = "rotate(${rotatePos}deg)";

  updateFromElement(textElement, insertedName);
}

void updateFromElement(Element textElement, String value) {

  Element errorField = query("#errorValue");

  if (value == "") {
    errorField.text = "Text Field is empty, please insert a value!";
    errorField.style.color = "red";
    textElement.text = DEFAULT_VALUE;
    textElement.focus();
  } else {
    textElement.text = value;
    errorField.text = "";
  }
}

Element.focus() 似乎不起作用,或者我在这里误解了一些东西。还添加了 HTML 文件以便更好地理解:

<!DOCTYPE html>

<html>
  <head>
    <meta charset="utf-8">
    <title>Sandbox</title>
    <link rel="stylesheet" href="sandbox.css">
  </head>
  <body>
    <h1>Sandbox</h1>

    <p>Dart Sandbox</p>

    Enter any text: <input type="text" id="name"> <input type="button" value="Submit" id="submit"> <div id="error"><p id="errorValue"></div>

    <div id="container">
      <p id="text"></p>
    </div>

    <script type="application/dart" src="web/sandbox.dart"></script>
    <script src="http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js"></script>
  </body>
</html>
4

2 回答 2

2

我只是试着模拟一个你所拥有的样本。向 HTML 添加一些组件以大致创建相同的效果。我发现了你的问题:

var textElement = query("#text");
// ....
updateFromElement(textElement, insertedName);

您正在传递作为<P>(段落)元素的 textElement 。不是文本字段。所以你不能在它上面调用 focus() 。尝试这个:

updateFromElement(nameField, insertedName);
于 2012-09-25T13:56:27.850 回答
0

感谢马特 B,我能够看到错误......我不会像他建议的那样更改参数。无论如何,这是一个丑陋的模式。但要使其正常工作,只需交换以下行:

- textElement.focus();
+ nameField.focus();

该方法的更好措辞是“updateToElement(Element targetElement, String value)”

于 2012-09-25T14:25:36.273 回答