摘要:不要使用通常会触发回发的 asp.net 按钮,而是使用 html 制作一个。让 html 按钮运行一个 javascript 函数,该函数首先检查正则表达式验证,然后(如果有效)运行回发函数。
首先,我将删除用于触发服务器端代码的 asp.net 按钮,并将其替换为客户端按钮。如果您需要帮助创建此按钮,您可以按照我的另一个答案中的步骤操作。链接在这里:
https://stackoverflow.com/questions/14062993/input-type-image-onclick-will-trigger-its-event-but-not-act-well-on-funct/14063911#14063911-堆栈溢出
其次,javascript 函数应首先使用正则表达式函数验证数据。使用这样的东西:
function validateCombobox(myComboboxValue) {
if(myComboboxValue.match(regularExpressionString)===null){
return false
} else {
return true
};
};
***注意:Regex 对我来说是一个薄弱环节,所以你可能需要稍微修改一下这个脚本。
第三,如果使用上面的脚本验证输入,则使用 javascript 调用回发。为此,请按照下列步骤操作:
- 在asp页面上创建一个。这是必要的,因为没有它,站点将不会为所需的 buttonclick 事件生成事件处理程序。
将链接按钮的 css 显示属性设置为“无”。请注意,链接按钮的“Visible”属性可能会设置为 true(这是因为 asp.net 甚至不会呈现带有 false visible 属性的控件的代码)。为了说明,如果您的链接按钮的 cssClass 名称是 myButton,请将其添加到您的 css 文件中:
.myButton
{
display: none;
}
现在按钮已创建并正确隐藏,您可以将回发功能添加到您的 javascript 函数中。postback 函数有两个参数,第一个是我们创建的链接按钮控件的客户端 ID。请注意,asp.net 控件的客户端 ID 与您在开发期间为其分配的 ID 不同。因此,我们使用 <%=Control.ClientId %> 来获取控件的客户端 ID。如果您的链接按钮 ID 是“myLinkButton”,则以下应该是您的回发功能:
__doPostBack('<%=myLinkButton.clientid %>','')
请注意,此函数的开头有两个下划线字符。
以下是新按钮应调用的正则表达式验证函数和 javascript 函数的示例:
function validateCombobox(myComboboxValue) {
if(myComboboxValue.match(regularExpressionString)===null){
return false
} else {
return true
};
};
function comboBoxButton_click(){
var myComboboxValue = $('#<%=myComboBox.clientid %>').val();
if(validateCombobox(myComboboxValue)==true){
__doPostBack('<%=myLinkButton.clientid %>','');
};
};
我现在有很多分心的事情,而且有点心烦意乱,所以如果这些说明有点混乱,请原谅我。如果您需要更多帮助,请随时发表评论,我会尽快回来查看。