我是powerbuilder的新手:
我想在电子邮件文本字段完成输入后验证它并转到另一个文本字段。
所以我将我的代码放在数据窗口"
的" itemchanged事件中继承我的代码:
choose case dwo.name
case 'email'
if data <> '' then
if match(data,'^[a-zA-Z0-9._%+-]+@[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
中有一个代码,以便我可以清除电子邮件字段?
有谁可以帮助我?
答案 0 :(得分:1)
幸运的是我通过在dw itemchanged
事件中执行此操作来修复它。
choose case dwo.name
case 'email'
if data <> '' then
if match(data,'^[a-zA-Z0-9._%+-]+@[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