array(2) { ["docs"]=> array(0) { } ["count"]=> int(0) } 111string(0) "" int(1) int(10) int(70) int(8640000) string(13) "likecs_art_db" array(1) { ["query"]=> array(1) { ["match_all"]=> object(stdClass)#43 (0) { } } } array(1) { ["createtime.keyword"]=> array(1) { ["order"]=> string(4) "desc" } } int(10) int(0) int(8640000) array(2) { ["docs"]=> array(0) { } ["count"]=> int(0) } 验证控件网页代码分析2 - 爱码网
如果我们在文本框中什么都没有输入,直接点击按钮,则激发Button1的onclick事件,执行
javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("Button1", "", true, "", "", false, false))
分解开来,则是先执行
new WebForm_PostBackOptions("Button1", "", true, "", "", false, false)
再执行
WebForm_DoPostBackWithOptions(...)

W1
验证控件网页代码分析2//设置好各个参数
验证控件网页代码分析2
function WebForm_PostBackOptions(eventTarget, eventArgument, validation, validationGroup, actionUrl, trackFocus, clientSubmit)
}

这里先对Page_ClientValidate(整个页面进行验证,在W2中)的子程序进行展开:
验证控件网页代码分析2function Page_ClientValidate(validationGroup)
}
它有调用
ValidatorValidate->(IsValidationGroupMatch, evaluationfunction==RequiredFieldValidatorEvaluateIsValid, ValidatorSetFocus, ValidatorUpdateDisplay):验证控件
ValidatorUpdateIsValid->AllValidatorsValid:更新整个页面的验证状态
ValidationSummaryOnSubmit:处理分组情况?
上面三个被调用的子程序中又以ValidatorValidate为重要,我们对它分析一下
验证控件网页代码分析2function ValidatorValidate(val, validationGroup, event)
}
它中间又调用了四个子程序(IsValidationGroupMatch, evaluationfunction==RequiredFieldValidatorEvaluateIsValid, ValidatorSetFocus, ValidatorUpdateDisplay),其中ValidatorSetFocus我们以后分析。其它三个分析如下:
验证控件网页代码分析2//验证控件的组是不是指定的组
验证控件网页代码分析2
function IsValidationGroupMatch(control, validationGroup)
}
我对这段程序还不理解,为什么设置一个显示不显示还要这么繁?

还有一个子程序是更新整个页面的验证状态:
验证控件网页代码分析2//更新整个页面的验证状态
验证控件网页代码分析2
function ValidatorUpdateIsValid()
}

这些子程序分析完成后,最后要回到我们的按钮点击事件来,通过以上代码走一着,Page_BlockSubmit被设置为true,即阻塞网页的提交。
这时,再去主网页看,提交的代码:onsubmit="javascript:return WebForm_OnSubmit();"
验证控件网页代码分析2function WebForm_OnSubmit()
}
最后结果是:当输入框不满足验证控件的要求时,验证控件显示出来,网页阻止提交。
未完,待续

相关文章: