2017-07-10 2 views
1

参考:https://jsfiddle.net/lesson8/5tt7d3e6/ 数字の単語機能を実装するためにASPのテキストボックスコントロールを使用したいと思います! 数字をonkeyup関数に変換するjavascript関数を持っています。javascriptを使用した数字(インドのナンバリングシステム)

<asp:TextBox ID="txtBudget" runat="server" class="form-control input-sm" placeholder="" TabIndex="1" onkeyup="wordDiv.innerHTML=convertNumberToWords(this.value);" onkeypress="return keyRestrictValidChars(event, '1234567890,');"></asp:TextBox> 
<div id="wordDiv"></div> 

しかし、私はそれが働いていない理由を把握することができません:ASPのテキストボックス用

function convertNumberToWords(amount) { 
     var words = new Array(); 
     words[0] = ''; 
     words[1] = 'One'; 
     words[2] = 'Two'; 
     words[3] = 'Three'; 
     words[4] = 'Four'; 
     words[5] = 'Five'; 
     words[6] = 'Six'; 
     words[7] = 'Seven'; 
     words[8] = 'Eight'; 
     words[9] = 'Nine'; 
     words[10] = 'Ten'; 
     words[11] = 'Eleven'; 
     words[12] = 'Twelve'; 
     words[13] = 'Thirteen'; 
     words[14] = 'Fourteen'; 
     words[15] = 'Fifteen'; 
     words[16] = 'Sixteen'; 
     words[17] = 'Seventeen'; 
     words[18] = 'Eighteen'; 
     words[19] = 'Nineteen'; 
     words[20] = 'Twenty'; 
     words[30] = 'Thirty'; 
     words[40] = 'Forty'; 
     words[50] = 'Fifty'; 
     words[60] = 'Sixty'; 
     words[70] = 'Seventy'; 
     words[80] = 'Eighty'; 
     words[90] = 'Ninety'; 
     amount = amount.toString(); 
     var atemp = amount.split("."); 
     var number = atemp[0].split(",").join(""); 
     var n_length = number.length; 
     var words_string = ""; 
     if (n_length <= 9) { 
      var n_array = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0); 
      var received_n_array = new Array(); 
      for (var i = 0; i < n_length; i++) { 
       received_n_array[i] = number.substr(i, 1); 
      } 
      for (var i = 9 - n_length, j = 0; i < 9; i++, j++) { 
       n_array[i] = received_n_array[j]; 
      } 
      for (var i = 0, j = 1; i < 9; i++, j++) { 
       if (i == 0 || i == 2 || i == 4 || i == 7) { 
        if (n_array[i] == 1) { 
         n_array[j] = 10 + parseInt(n_array[j]); 
         n_array[i] = 0; 
        } 
       } 
      } 
      value = ""; 
      for (var i = 0; i < 9; i++) { 
       if (i == 0 || i == 2 || i == 4 || i == 7) { 
        value = n_array[i] * 10; 
       } else { 
        value = n_array[i]; 
       } 
       if (value != 0) { 
        words_string += words[value] + " "; 
       } 
       if ((i == 1 && value != 0) || (i == 0 && value != 0 && n_array[i + 1] == 0)) { 
        words_string += "Crores "; 
       } 
       if ((i == 3 && value != 0) || (i == 2 && value != 0 && n_array[i + 1] == 0)) { 
        words_string += "Lakhs "; 
       } 
       if ((i == 5 && value != 0) || (i == 4 && value != 0 && n_array[i + 1] == 0)) { 
        words_string += "Thousand "; 
       } 
       if (i == 6 && value != 0 && (n_array[i + 1] != 0 && n_array[i + 2] != 0)) { 
        words_string += "Hundred and "; 
       } else if (i == 6 && value != 0) { 
        words_string += "Hundred "; 
       } 
      } 
      words_string = words_string.split(" ").join(" "); 
     } 
     return words_string; 
    } 

コード:

私のjavascript関数は。

私は次のコードでASPのテキストボックスを交換する場合:

<input type="text" name="number" placeholder="Number OR Amount" onkeyup="wordDiv.innerHTML=convertNumberToWords(this.value)" /> 
<div id="wordDiv"></div> 

そして、それが正常に動作します!

onkeyup="return convertNumberToWords(this.value);" 

onkeyup="return convertNumberToWords(this.value, 'wordDiv');" 

しかし、どちらも働いた:ASPのテキストボックスを使用している間

は、私はあまりにも、次の試してみました!

誰でも同じ機能を使用している間、aspのテキストボックスの問題は何ですか?

+0

別のWebアプリケーションで共有コードをテストしました。それは私とうまく動作します。 – Prabhat

+0

@Prabhat通常の入力タイプで正常に動作していますが、ASPテキストボックスで動作可能にしたかった – ace

+0

はい... ASPのテキストボックスサーバーコントロールをHTML入力ではなく使用しました。 – Prabhat

答えて

1

私は両方を試してみましたが、期待通りに動作しています。以下

出力

Default.aspxの

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebFormApplication1._Default" %> 

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server"> 
    <script type="text/javascript"> 
     function convertNumberToWords(amount) { 
      var words = new Array(); 
      words[0] = ''; 
      words[1] = 'One'; 
      words[2] = 'Two'; 
      words[3] = 'Three'; 
      words[4] = 'Four'; 
      words[5] = 'Five'; 
      words[6] = 'Six'; 
      words[7] = 'Seven'; 
      words[8] = 'Eight'; 
      words[9] = 'Nine'; 
      words[10] = 'Ten'; 
      words[11] = 'Eleven'; 
      words[12] = 'Twelve'; 
      words[13] = 'Thirteen'; 
      words[14] = 'Fourteen'; 
      words[15] = 'Fifteen'; 
      words[16] = 'Sixteen'; 
      words[17] = 'Seventeen'; 
      words[18] = 'Eighteen'; 
      words[19] = 'Nineteen'; 
      words[20] = 'Twenty'; 
      words[30] = 'Thirty'; 
      words[40] = 'Forty'; 
      words[50] = 'Fifty'; 
      words[60] = 'Sixty'; 
      words[70] = 'Seventy'; 
      words[80] = 'Eighty'; 
      words[90] = 'Ninety'; 
      amount = amount.toString(); 
      var atemp = amount.split("."); 
      var number = atemp[0].split(",").join(""); 
      var n_length = number.length; 
      var words_string = ""; 
      if (n_length <= 9) { 
       var n_array = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0); 
       var received_n_array = new Array(); 
       for (var i = 0; i < n_length; i++) { 
        received_n_array[i] = number.substr(i, 1); 
       } 
       for (var i = 9 - n_length, j = 0; i < 9; i++, j++) { 
        n_array[i] = received_n_array[j]; 
       } 
       for (var i = 0, j = 1; i < 9; i++, j++) { 
        if (i == 0 || i == 2 || i == 4 || i == 7) { 
         if (n_array[i] == 1) { 
          n_array[j] = 10 + parseInt(n_array[j]); 
          n_array[i] = 0; 
         } 
        } 
       } 
       value = ""; 
       for (var i = 0; i < 9; i++) { 
        if (i == 0 || i == 2 || i == 4 || i == 7) { 
         value = n_array[i] * 10; 
        } else { 
         value = n_array[i]; 
        } 
        if (value != 0) { 
         words_string += words[value] + " "; 
        } 
        if ((i == 1 && value != 0) || (i == 0 && value != 0 && n_array[i + 1] == 0)) { 
         words_string += "Crores "; 
        } 
        if ((i == 3 && value != 0) || (i == 2 && value != 0 && n_array[i + 1] == 0)) { 
         words_string += "Lakhs "; 
        } 
        if ((i == 5 && value != 0) || (i == 4 && value != 0 && n_array[i + 1] == 0)) { 
         words_string += "Thousand "; 
        } 
        if (i == 6 && value != 0 && (n_array[i + 1] != 0 && n_array[i + 2] != 0)) { 
         words_string += "Hundred and "; 
        } else if (i == 6 && value != 0) { 
         words_string += "Hundred "; 
        } 
       } 
       words_string = words_string.split(" ").join(" "); 
      } 
      return words_string; 
     } 
    </script> 

    <div class="row"> 
     <div class="col-md-4"> 
      Asp.net textbox : 
      <asp:TextBox ID="txtBudget" runat="server" class="form-control input-sm" placeholder="" TabIndex="1" 
       onkeyup="wordDiv1.innerHTML=convertNumberToWords(this.value);" 
       onkeypress="return keyRestrictValidChars(this.value);"></asp:TextBox> 
      <div id="wordDiv1"></div> 
     </div> 
     <br /> 
    </div> 
    <div class="row"> 
     <div class="col-md-4"> 
      Html Textbox : 
      <input type="text" name="number" placeholder="Number OR Amount" onkeyup="wordDiv2.innerHTML=convertNumberToWords(this.value)" /> 
      <div id="wordDiv2"></div> 
     </div> 

    </div> 

</asp:Content> 

出力

enter image description hereと共に両方の実装を含むものです

+0

ASPテキストボックスで実装したいのですが、通常のhtml入力で既に動作しています – ace

+0

他のjavascript関数も同じテキストボックスに適用されています、私はASPのテキストボックスを使用してそれをやりたかった – ace

+0

それはあなたが問題になっていくつかの他のもののようです。私はasp.netテキストボックスとhtmlテキストボックスの両方で試してみました。両方のシナリオは私のために働いて –

関連する問題