DEV如何在前端动态设置某些控件为必填项:包括通过某控件的值动态设置其他控件为必填项或非必填项,以及其他控件根据关键控件的值动态设置自身为必填项或非填项,这里面的关键部分:关键控件根据自身的值控制其他控件是否为必填项时,用到的方法是:SetIsValid(true或false),自身根据关键控件的值来设置自身是否为必填项,用到的方法:e.isValid=true或false,这个是比较关键的代码,只有使用e参数设置自身是否为必填项时,在行验证时才会出现警告图标,使用SetIsValid()方法,只在编辑时动态显示警告图标,但在行验证时会隐藏,不起作用!要特别注意!
前端代码:
关键控件根据自身值动态设置其他控件是否为必填项
function bglx_SelectedIndexChanged(s, e) {
//当为非所有人变更时,变更后所有人为空是非必填项,变更日期、变更说明都为必填项
if (s.GetText().trim() == "非所有人变更")
{
bghsyr.SetText("");
bghsyr.SetIsValid(true);
if (bgrq.GetText().trim() == "") {
bgrq.errorText = "必填";
bgrq.SetIsValid(false);
}
else {
bgrq.SetIsValid(true);
}
if (bgsm.GetText().trim() == "") {
bgsm.errorText = "必填";
bgsm.SetIsValid(false);
}
else {
bgsm.SetIsValid(true);
}
//当状态为不可用时,错误图标是不显示的
bghsyr.SetEnabled(false);
bgrq.SetEnabled(true);
bgsm.SetEnabled(true);
}
//当为无变更时,变更后所有人、变更日期、变更说明都为空
if (s.GetText().trim() == "无变更") {
bghsyr.SetText("");
bgrq.SetText("");
bgsm.SetText("");
bghsyr.SetIsValid(true);
bgrq.SetIsValid(true);
bgsm.SetIsValid(true);
//当状态为不可用时,错误图标是不显示的
bghsyr.SetEnabled(false);
bgrq.SetEnabled(false);
bgsm.SetEnabled(false);
}
//当为报废时,变更后所有人="报废",变更日期、变更说明为必填项
if (s.GetText().trim() == "报废") {
//当改变了非所有人变更的值时,首先应先可用状态初始化,即都为能用,然后再根据情况设置可用状态,当状态为不可用时,错误图标是不显示的
bghsyr.SetText("报废");
//必须放在enabled后面,因为enabeld会改变isValid的值为true
if (bghsyr.GetText().trim() != "报废") {
bghsyr.errorText = "必须为报废";
bghsyr.SetIsValid(false);
}
else {
bghsyr.SetIsValid(true);
}
if (bgrq.GetText().trim() == "") {
bgrq.errorText = "必填";
bgrq.SetIsValid(false);
}
else {
bgrq.SetIsValid(true);
}
if (bgsm.GetText().trim() == "") {
bgsm.errorText = "必填";
bgsm.SetIsValid(false);
}
else {
bgsm.SetIsValid(true);
}
//当状态为不可用时,错误图标是不显示的
bghsyr.SetEnabled(false);
bgrq.SetEnabled(true);
bgsm.SetEnabled(true);
}
//当为转出时,变更后所有人="未知"或选择、变更日期、变更说明为必填项
if (s.GetText() == "转出") {
if (bghsyr.GetText().trim() == "") {
bghsyr.errorText = "必填";
bghsyr.SetIsValid(false);
}
else {
bghsyr.SetIsValid(true);
}
if (bgrq.GetText().trim() == "") {
bgrq.errorText = "必填";
bgrq.SetIsValid(false);
}
else {
bgrq.SetIsValid(true);
}
if (bgsm.GetText().trim() == "") {
bgsm.errorText = "必填";
bgsm.SetIsValid(false);
}
else {
bgsm.SetIsValid(true);
}
//当状态为不可用时,错误图标是不显示的
bghsyr.SetEnabled(true);
bgrq.SetEnabled(true);
bgsm.SetEnabled(true);
}
}
以下为控件自身根据关键控件的值动态设置自身是否为必填项
//变更后所有人的变化事件
function bghsyr_Validation(s, e) {
if (bglx.GetText().trim()== "无变更") {
e.isValid = true;
}
if (bglx.GetText().trim() == "转出") {
if (bghsyr.GetText() == "") {
e.errorText = "必填";
e.isValid = false;
}
else {
e.isValid = true;
}
}
if (bglx.GetText().trim() == "报废") {
if (bghsyr.GetText() != "报废") {
e.errorText = "必须为报废";
e.isValid = false;
}
else {
e.isValid = true;
}
}
if (bglx.GetText().trim() == "非所有人变更") {
if (bghsyr.GetText() != "") {
e.errorText = "必须为空";
e.isValid = false;
}
else {
e.isValid = true;
}
}
}
//变更日期的变化事件
function bgrq_Validation(s, e) {
if (bglx.GetText().trim() == "无变更") {
e.isValid = true;
}
if (bglx.GetText().trim() == "转出") {
if (bgrq.GetText() == "") {
e.errorText = "必填";
e.isValid = false;
}
else {
e.isValid = true;
}
}
if (bglx.GetText().trim() == "报废") {
if (bgrq.GetText() == "") {
e.errorText = "必填";
e.isValid = false;
}
else {
e.isValid = true;
}
}
if (bglx.GetText().trim() == "非所有人变更") {
if (bgrq.GetText() == "") {
e.errorText = "必填";
e.isValid = false;
}
else {
e.isValid = true;
}
}
}
//变更日期的变化事件
function bgsm_Validation(s, e) {
if (bglx.GetText().trim() == "无变更") {
e.isValid = true;
}
if (bglx.GetText().trim() == "转出") {
if (bgsm.GetText() == "") {
e.errorText = "必填";
e.isValid = false;
}
else {
e.isValid = true;
}
}
if (bglx.GetText().trim() == "报废") {
if (bgsm.GetText() == "") {
e.errorText = "必填";
e.isValid = false;
}
else {
e.isValid = true;
}
}
if (bglx.GetText().trim() == "非所有人变更") {
if (bgsm.GetText() == "") {
e.errorText = "必填";
e.isValid = false;
}
else {
e.isValid = true;
}
}
}