2012-03-04 188 views
0

我在捐赠网站工作。在我的页面中,我有一个文本框,它接受来自用户的数字值(即,要捐赠的钱)。打开一个新窗口/标签

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

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

的问题是,标签是永远不会打开,即使号码是有效的。你能帮我解决这个问题吗?谢谢。

P.S.

这里是按钮的发起验证码:

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

回答

2
<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是区分大小写)

+0

我试过你的代码,但该选项卡仍然无法打开。由于代码看起来正确,我无法弄清楚什么是错误的。 – Matthew 2012-03-04 10:54:52

+0

我会附带更新(isNan其实应该是isNaN) – 2012-03-04 10:55:49

+0

谢谢。我尝试改变isNaN,但问题仍然存在。 – Matthew 2012-03-04 10:57:44

1

不应该在该行...

if (isNan(textbox) == false) 

是这样,而不是...

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

我改变了线,但问题仍然persits:■ – Matthew 2012-03-04 10:47:54

+0

如果我从脚本删除验证码,离开window.open部分,它的工作原理。 但由于某种原因,当我介绍这两项检查时,该选项卡从不打开。 – Matthew 2012-03-04 10:50:07

+0

你可以尝试把一个console.log(“测试”);或警报(“测试”);在你的javascript函数的开始,看看是否有东西被记录或提醒? – timothyclifford 2012-03-04 10:52:03

1

这里是一个精简工作的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(); 
    }); 
}); 

1

首先,我会建议明确解析的数量,而不是靠当你传递一个字符串到isNaN将应用于隐ToNumber操作。想必你的用户输入小数,所以如果它的意思是一个整数(如10),用途:

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

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

var num = parseFloat(textbox.value); 

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

然后你if条件为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> 

最后,你确定文本框的客户端ID确实是“DonationTextBox”? ASP自动生成客户端ID,您可能需要使用ClientID代替,例如:

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

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