2016-12-22 62 views
0

进出口新的PowerBuilder中:验证文本字段PowerBuilder的

我想验证电子邮件文本字段的输入完成后,就可以后去到另一个文本字段。

所以我把我的代码在“数据窗口的itemchanged事件”

继承人我的代码:

choose case dwo.name 
case 'email' 
    if data <> '' then 
    if match(data,'^[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z][a-zA-Z][a-zA-Z]*[a-zA-Z]*$') then 
    else 
     This.SetText('') 
     MessageBox('Error', 'This is an invalid email') 
    end if 
    end if 
end choose 

这里会发生什么事是,当我键入例如'asd'

所以这是一个无效的电子邮件becoz它不通过比赛

它实际上清除电子邮件字段,但之后messagebox fired和我clicked OK

'asd'我已清除的电子邮件字段的值返回。

我觉得这很奇怪吗?

凡事件应该我put my validation以及如何编码?或者在itemchanged中有这样的代码,以便我可以清除电子邮件字段?

任何人都可以帮助我吗?

+1

OFFTOPIC:这不是更正确的检查电子邮件吗?匹配(邮件,'^ [A-ZA-Z0-9] [A-ZA-Z0-9 \ -_ \。] * \ @ [A-ZA-Z0-9] [A-ZA-Z0-9 \ -_ \。] * \。[a-zA-Z0-9 \ -_ \。] + [a-zA-Z0-9] + $') –

+0

感谢您的更正。比如[email protected] –

回答

0

幸运的是我通过在dw itemchanged事件中这样做来修复它。

choose case dwo.name 
case 'email' 
    if data <> '' then 
    if match(data,'^[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z][a-zA-Z][a-zA-Z]*[a-zA-Z]*$') then 
    else 
     MessageBox('Error', 'This is an invalid email') 
     Return 1 //means does not accept the value and triggers itemerror. 
    end if 
    end if 
end choose 

通过添加return 1它给出了另一个消息框。

Data Window Error: This 'asd' does not pass the validation 

覆盖此默认错误消息。

在DW itemerror事件

CHOOSE CASE dwo.name 
    CASE 'email' 
    This.setText('') //if you just want to validate just remove this. 
    Return 2 //means does not accept the value and does not let losefocus 
END CHOOSE 

添加代码的一些块。 :D