为什么我的自定义JavaScript会阻止验证器触发

时间:2010-03-31 18:56:26

标签: javascript

在.NET 2.0中,我有几个客户端验证器和.NET验证器控件。当我点击一个按钮时,这些运行正常...直到我将自己的javascript函数添加到此按钮。它似乎阻止它们运行,而不是与验证器一起运行。

要清楚,验证器控件是基本的必需字段验证器,这是我添加的javascript:

    <script language="javascript">
function yaya()
{
    var chkAmount = document.frmSearchFor.txtCheckAmount.value;
    var amtApplied = document.frmSearchFor.lblAmountApplied.value;
    if  (amtApplied < chkAmount)
    {
        return confirm('Continue?');
    }
}
</script>

它与这样的按钮相关联......

OnClientClick="return yaya();

3 个答案:

答案 0 :(得分:1)

这些可能不是正在向您的页面呈现的ID。试试这个:

function yaya()
{
    var checkAmount = parseFloat(document.getElementById("<%=txtCheckAmount.ClientID %>").value);
    var amoutApplied = parseFloat(document.getElementById("<%=lblAmountApplied.ClientID %>").text);
    if  (amoutApplied < checkAmount)
    {
        return confirm('Continue?');
    }
}

并试着像这样附上:

OnClientClick="javascript:yaya();";

答案 1 :(得分:0)

客户端验证是通过javascript完成的,就像您的客户端点击一样。当您指定客户端事件时,我猜测无法附加验证代码。您可能需要修改验证代码以调用您的函数,或修改您调用验证代码的函数。可能后者更容易。不是在设计时指定OnClientClick,而是添加一个存储当前单击处理函数的客户端脚本,创建一个运行代码的函数,然后运行存储的处理函数,并将该新函数作为单击处理程序附加。

<script>
var baseHandler = myElement.onclick;

myElement.onClick = function() {
    // run your code here
    baseHandler();
}
</script>

答案 2 :(得分:0)

问题是您在OnClientClick属性中指定了一个返回。当页面呈现时,它会像这样出现

<input ... onclick="return yaya();WebForm_DoPostBackWithOptions...
在yaya完成之后,onclick函数结束,我相信它正在关闭通常在提交表单之前发生的任何进一步操作。它有点难看,但你可以通过在函数求值为false时返回来解决这个问题:

OnClientClick="if (!yaya()) { return false; }"

为此工作你还应该包括return true;在函数结束时,如果不满足if检查的条件。

你可能也遇到过Hunter提及的元素引用问题,但是你没有提供你的标记来验证。