C# 打开一个新窗口/选项卡

C# 打开一个新窗口/选项卡,c#,javascript,asp.net,C#,Javascript,Asp.net,我正在一个捐款网站上工作。在我的页面中,我有一个文本框,它接受来自用户的数字值(即捐款) 在我的代码隐藏中,我有一个方法来检查文本框中的值是否为数字。如果数字无效,该方法将生成错误消息 我还有一个JavaScript,在检查文本框中的值是否为数字后,它会在网站确认页面上打开一个新选项卡,感谢用户的捐赠。以下是javascript的代码: <script type="text/javascript"> function Open_Window() {

我正在一个捐款网站上工作。在我的页面中,我有一个文本框,它接受来自用户的数字值(即捐款)

在我的代码隐藏中,我有一个方法来检查文本框中的值是否为数字。如果数字无效,该方法将生成错误消息

我还有一个JavaScript,在检查文本框中的值是否为数字后,它会在网站确认页面上打开一个新选项卡,感谢用户的捐赠。以下是javascript的代码:

<script type="text/javascript">
        function Open_Window()
        {
            var textbox = document.getElementById('DonationTextBox');

            if (textbox.value != "")
            {
                if (isNan(textbox) == false)
                {
                    window.open("DonationConfirmation.aspx")
                }
            }
        }
    </script>

函数Open_Window()
{
var textbox=document.getElementById('DonationTextBox');
如果(textbox.value!=“”)
{
如果(isNan(文本框)=false)
{
window.open(“DonationConfirmation.aspx”)
}
}
}
问题是,即使号码有效,该选项卡也永远不会打开。你能帮我解决这个问题吗?多谢各位

附言

以下是启动验证的按钮的代码:

<asp:ImageButton ID="PayPalButton2" runat="server" ImageAlign="Middle" 
                                        ImageUrl="Resources/Icons/PayPalCheckOut.gif" 
                                        onclick="PayPalButton2_Click" OnClientClick="Open_Window()"/>

这行不应该

if (isNan(textbox) == false)
而是这个

if (isNan(textbox.value) == false)

函数Open_Window()
{
var textbox=document.getElementById(“”);
如果(textbox.value!=“”&&!isNaN(textbox.value)){
window.open(“DonationConfirmation.aspx”);
}
}
编辑

代替isNan的应该是isNan(javascript区分大小写)

下面是一个精简的JSFIDLE工作示例:

html:

<a href="javascript:void(0)" id="PayPalButton2">Open</a>
<textarea id="donationTextBox">1</textarea>​

首先,我建议显式解析数字,不要依赖将字符串传递到
isNaN
时应用的隐式操作。假设您的用户正在输入十进制数,因此如果它是一个整数(例如10),请使用:

如果它是一个带有分数成分的数字(例如,10.5),请使用:

您可能需要
parseFloat
作为货币值

然后,如果
条件变为
isNaN
(请注意,最后的
N
是有上限的),则在
num
上:

<script type="text/javascript">
        function Open_Window()
        {
            var textbox = document.getElementById('DonationTextBox');
            var num = parseInt(textbox.value, 10);

            if (!isNaN(num))
            {
                window.open("DonationConfirmation.aspx")
            }
        }
</script>

函数名为
isNaN
。注:最后的“N”是大写字母。这应该可以解决您的问题。

我更改了行,但问题仍然存在:如果我从脚本中删除验证代码并保留窗口。打开部分,它就可以工作。但是由于某种原因,当我引入这两个检查时,选项卡从未打开过;或警报(“测试”);在javascript函数开始时,查看是否有任何内容被记录或警报?您还可以尝试console.log(textbox);在var textbox=document.getElementById('DonationTextBox')之后;行以确保您正确获取元素。日志存储在哪里?如果这可能是一个愚蠢的问题,很抱歉,但我对JavaScript比较陌生。我尝试了你的代码,但选项卡仍然没有打开。我不知道怎么回事,因为代码似乎是正确的。谢谢。我试着改成isNaN,但问题仍然存在。非常感谢:()(()()()()()()()()((41
function openWindow() {
    if($('#donationTextBox').val() && isNaN($('#donationTextBox').val()) === false)
        window.open("http://www.google.com/", "mywindow");
}

$(document).ready(function() {
    $('#PayPalButton2').click(function(){
        openWindow();
    });
});
var num = parseInt(textbox.value, 10);
var num = parseFloat(textbox.value);
<script type="text/javascript">
        function Open_Window()
        {
            var textbox = document.getElementById('DonationTextBox');
            var num = parseInt(textbox.value, 10);

            if (!isNaN(num))
            {
                window.open("DonationConfirmation.aspx")
            }
        }
</script>
var textbox = document.getElementById('<%=DonationTextBox.ClientID%>');