谷歌应用程序脚本中的验证功能无法正常工作

时间:2012-09-03 17:58:59

标签: google-apps-script

1.Textbox: 在使用.validateNotNumber(TextBox)时,TextBox正在接受字母数字,因为我想在文本框中只有NAME'abc1234',它只接受'abcd'。如果文本框仅使用keyuphandler处理NUMBERS,它只接受'1234'n而不是'a1234',这是现在的当前行为。它接受'a1234'。意思是,第一个字符是正确验证的,如果我们输入'a',它确实没有验证,如果我们输入'a1234',它在第一个数字后正确验证,即它只在i / p后输出错误NUMBER类型的文本框区域中的第二个字符!

function doGet()
{
  var app = UiApp.createApplication();
  var panel = app.createVerticalPanel();
  var grid = app.createGrid(11, 10).setId('maingrid');

  var nameLabel = app.createLabel("Name:");
  var nameTextBox = app.createTextBox().setName('name').setId('name');
  var nameRequiredLabel = app.createLabel("*").setId('namerequired').setStyleAttribute("color", "red");

  var requiredFieldLabel = app.createLabel("*-Required Field").setId('requiredfield').setStyleAttribute("color", "red");

  grid.setWidget(0, 0, nameLabel).setWidget(0, 1, nameTextBox).setWidget(0, 2, nameRequiredLabel)
    .setWidget(9, 2,requiredFieldLabel);

  var invalidText=app.createClientHandler().validateNumber(nameTextBox)
      .forTargets(nameTextBox).setStyleAttribute("color", "red")
      .forTargets(nameRequiredLabel).setText('Please Enter a Valid Name.').setStyleAttribute("color", "red").setVisible(true);
  var validText=app.createClientHandler().validateNotNumber(nameTextBox)
      .forTargets(nameTextBox).setStyleAttribute("color","black")
      .forTargets(nameRequiredLabel).setText('*').setStyleAttribute("color", "red").setVisible(true);

  nameTextBox.addKeyUpHandler(invalidText).addKeyUpHandler(validText);

  panel.add(grid);
  app.add(panel);
  return app;
}

注意:我也使用了.validateInteger(TextBox)和.validateNotInteger(TextBox),但它也提供了与上面相同的o / p(字母数字)。

2.DateBox: 它只接受DATES格式,并且在选择DATE后可以输入任何其他字符。 Fr例如。如果我选择DATE '14 -08-2012',它会接受超出此长度的任何其他字符,例如'14 -08-2012abc123',字面意思是shld是一种验证/限制字段的方法,如果它是任何REAL DATE格式只是DATE + TEXT。在意外情况下,用户可能会在DATE框中输入任何不需要的文本,我们可能需要避免这些文本!我们可能需要'.validateDateLength()来处理这个问题!

3.Drop Down box: 在任何给定的下拉框中,选项'SELECT'将是第一个选择,以便我们从下拉列表中选择所需的选项 我使用.validateMatches(“SELECT”)和.validateNotMatches(“SELECT”)来检查用户是否选择了任何选项,这意味着我想确保用户从NT下拉框中选择了一些内容留下选项UNSELECTED。但是,它似乎没有验证匹配。

4.Check Box,Radiobutton: 这两个控件,我只是想确保用户选择了我的任何RADIOS或任何我的CHECKBOXES,如果用户没有选择那些特定的RADIO,控制器会传递一个错误,说'PLZ SELECT THE RADIO /检查框选项以继续进行'。这样做的正确方法是什么?

EG。脚本

var valid = app.createClientHandler()
                 .validateNumber(number)
                .validateNotInteger(text)
                 .validateEmail(email)
                 .validateNotMatches(listbox, 'select')
                 .forTargets(submit).setEnabled(true)
                 .forTargets(number,text,email).setStyleAttribute("color","black")
                 .forTargets(numberrequired,textrequired,emailrequired).setText('*')
                 .setStyleAttribute("color","red").setVisible(true);

我使用上面的代码进行'SUBMIT'按钮启用和禁用概念,在这本身中,ListBox没有正确验证'SELECT'选项。

所以,基本上,我希望所有这些验证都能正常运行,所以我要启用“提交/保存”,直到我的所有上述控件都被检查/验证,这样才能确保用户输入/选择了所有选项正确&是进入SUBMIT页面所需的格式。

希望,我很清楚,请不要犹豫,问我在某处错了/不清楚!

请指导我, 谢谢&问候, chocka。

1 个答案:

答案 0 :(得分:0)

我怀疑addKeyPressHandler是错误的处理程序类型 - 有一个焦点样式处理程序 但是,是的,代码看起来或多或少是正确的。