繁体   English   中英

开启新视窗/分页

[英]Open a new window/tab

我正在捐赠网站上工作。 在我的页面中,我有一个文本框,该框接受用户的数值(即要捐赠的钱)。

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

我还有一个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>

问题是即使数字有效,也永远不会打开选项卡。 您能帮我解决这个问题吗? 谢谢。

聚苯乙烯

这是启动验证的按钮的代码:

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

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

<script type="text/javascript">
    function Open_Window()
    {
        var textbox = document.getElementById('<%=DonationTextBox.ClientID%>');                        
        if (textbox.value != "" && !isNaN(textbox.value)) {                
             window.open("DonationConfirmation.aspx");
        }
    }
</script>

编辑
而不是isNan应该是isNaN(JavaScript区分大小写)

这行不应该...

if (isNan(textbox) == false)

代替这个...

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

这是一个精简的jsFiddle示例:

http://jsfiddle.net/pjgalbraith/QZeSF/

的HTML:

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

和js:

function openWindow() {
    if($('#donationTextBox').val() && isNaN($('#donationTextBox').val()) === false)
        window.open("http://www.google.com/", "mywindow");
}

$(document).ready(function() {
    $('#PayPalButton2').click(function(){
        openWindow();
    });
});

首先,我建议显式解析数字,而不依赖于将字符串传递给isNaN时将应用的隐式ToNumber操作。 大概您的用户输入的是十进制,因此如果要输入整数(例如10),请使用:

var num = parseInt(textbox.value, 10);

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

var num = parseFloat(textbox.value);

您可能需要parseFloat作为货币值。

然后,您的if条件变成num上的isNaN (注意,最后一个N的上限):

<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>

最后,您确定文本框的客户端ID确实是'DonationTextBox'吗? ASP自动生成客户端ID,您可能需要改用ClientID ,例如:

var textbox = document.getElementById('<%=DonationTextBox.ClientID%>');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM