在执行Page_ClientValidate()之后,下拉列表不会回传。

5

更新:

我刚刚找到了解决方案。以下函数可行(删除else部分):

function confirmSubmit() {
     if (Page_ClientValidate("Group1")) {
         return window.confirm("Are you sure to submit the form?");
     } 
 }

但是我想知道为什么在加入else部分后它就不起作用了。

问题:

我想在用户填写完表单中的所有数据后弹出确认对话框。 我在提交按钮上设置了onclientclick="return confirmSubmit()"。

 function confirmSubmit() {

     if (Page_ClientValidate("Group1")) {
         return window.confirm("Are you sure to submit the form?");
     } else {

         return false;
     }
 }

如果Page_ClientValidate("Group1")返回false,则在我第一次选择下拉列表后,它不会导致回发,只有在我第二次选择下拉列表时才会发生回发。
问题是什么?

1
你的验证规则指出页面无效,并导致回发停止...这正是它们应该做的。你能发布验证器的标记吗?其中一个在Group1中的验证器说它不处于有效状态。 - Nick Craver
2个回答

13
调用Page_ClientValidate之后,变量Page_BlockSubmit被设置为true,这会阻止自动提交。但在第二次点击时,我仍然不完全理解为什么Page_BlockSubmit被重置为false。我正在进一步研究这个问题,但我有一个解决方案,并且时间紧迫,所以我要继续进行......

如果页面无效,请在执行代码块中添加以下代码。

Page_BlockSubmit = false;
抱歉,我只能使用英语回答你的问题。
function ValidatePage() 
{
    flag = true;
    if (typeof (Page_ClientValidate) == 'function') 
    {
        Page_ClientValidate();
    }

    if (!Page_IsValid) 
    {
        alert('All the * marked fields are mandatory.');
        flag = false;
        Page_BlockSubmit = false;
    }
    else 
    {
        flag = confirm('Are you sure you have filled the form completely? Click OK to confirm or CANCEL to edit this form.');    
    }
    return flag;       
}

0

我刚刚找到了解决方案。以下函数有效(删除else部分):

function confirmSubmit() {
     if (Page_ClientValidate("Group1")) {
         return window.confirm("Are you sure to submit the form?");
     } 
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接