2012-03-04 162 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'是大寫字母。這應該可以解決你的問題。

相關問題