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
//设置好各个参数
function WebForm_PostBackOptions(eventTarget, eventArgument, validation, validationGroup, actionUrl, trackFocus, clientSubmit)
}
这里先对Page_ClientValidate(整个页面进行验证,在W2中)的子程序进行展开:
function Page_ClientValidate(validationGroup)
}
它有调用
ValidatorValidate->(IsValidationGroupMatch, evaluationfunction==RequiredFieldValidatorEvaluateIsValid, ValidatorSetFocus, ValidatorUpdateDisplay):验证控件
ValidatorUpdateIsValid->AllValidatorsValid:更新整个页面的验证状态
ValidationSummaryOnSubmit:处理分组情况?
上面三个被调用的子程序中又以ValidatorValidate为重要,我们对它分析一下
function ValidatorValidate(val, validationGroup, event)
}
它中间又调用了四个子程序(IsValidationGroupMatch, evaluationfunction==RequiredFieldValidatorEvaluateIsValid, ValidatorSetFocus, ValidatorUpdateDisplay),其中ValidatorSetFocus我们以后分析。其它三个分析如下:
//验证控件的组是不是指定的组
function IsValidationGroupMatch(control, validationGroup)
}
我对这段程序还不理解,为什么设置一个显示不显示还要这么繁?
还有一个子程序是更新整个页面的验证状态:
//更新整个页面的验证状态
function ValidatorUpdateIsValid()
}
这些子程序分析完成后,最后要回到我们的按钮点击事件来,通过以上代码走一着,Page_BlockSubmit被设置为true,即阻塞网页的提交。
这时,再去主网页看,提交的代码:onsubmit="javascript:return WebForm_OnSubmit();"
function WebForm_OnSubmit()
}
最后结果是:当输入框不满足验证控件的要求时,验证控件显示出来,网页阻止提交。
未完,待续
相关文章: