asp.net必填字段验证程序禁用enter按钮表单提交

asp.net必填字段验证程序禁用enter按钮表单提交,asp.net,validation,requiredfieldvalidator,Asp.net,Validation,Requiredfieldvalidator,我们有一个包含许多必填字段的表单。当我在必填字段上并按enter键时,表单不会提交。但是,如果我所在的字段不是必填字段,则按enter键会提交表单。这是有问题的,因为提交表单会触发验证,从而在顶部显示验证摘要。如果我在必填字段上,则不会触发此验证。它似乎启动了自己的验证并显示我的错误文本(只是一个星号),但人们并没有看到这一点 有人知道为什么非必填字段输入键会提交表单,而必填字段输入键不会提交表单吗?根据您的描述,听起来您在使用服务器端验证。尝试在验证器上将EnableClientScript设

我们有一个包含许多必填字段的表单。当我在必填字段上并按enter键时,表单不会提交。但是,如果我所在的字段不是必填字段,则按enter键会提交表单。这是有问题的,因为提交表单会触发验证,从而在顶部显示验证摘要。如果我在必填字段上,则不会触发此验证。它似乎启动了自己的验证并显示我的错误文本(只是一个星号),但人们并没有看到这一点


有人知道为什么非必填字段输入键会提交表单,而必填字段输入键不会提交表单吗?

根据您的描述,听起来您在使用服务器端验证。尝试在验证器上将
EnableClientScript
设置为false,这将禁用客户端验证

如果这还不够,您可以在单击“提交”按钮时覆盖验证,如下所示:

<script type="text/javascript">
    validateForm = function(){
        var isValid = Page_ClientValidate("");
        if (isValid){
            //some custom logic if needed
        }
        return true; //do the postback even if validation fails?
                     //otherwise return isValid
    }
</script>
<asp:Button ID="Button1" runat="server" OnClientClick="return validateForm();" ... />

validateForm=函数(){
var isValid=Page_ClientValidate(“”);
如果(有效){
//如果需要,可以使用一些自定义逻辑
}
return true;//即使验证失败也要回发吗?
//否则返回有效
}

我同时使用服务器端和客户端验证。我不明白为什么我不想使用客户端验证?当我将验证器的客户端验证设置为false时,我就没有提交表单所需的字段。这也不是我的想法。我只是希望,除textarea字段外的任何字段在按enter键时都会提交表单,而不管它是否是必需的。这就是为什么我提供了一个示例,允许您操纵验证过程以满足您的需要。那么您是说,不是让所有字段提交表单,让所有人都提交,唯一的提交方法就是点击按钮?我真的不知道我在说什么。我只是从你的问题出发,给你一个选项来解决导致问题的验证器。我是否误解了这个问题?我实际上在这个表单上有将近100个字段,可能有也可能没有验证器(取决于我们客户的偏好)。所以问题不是由一个验证器引起的。所有验证器都不允许其响应字段提交表单。