-4

電卓用に作成したスクリプトをテストしています。HTMLフォーム要素を使用してユーザー入力値を取り込み、そのボタンがクリックされるたびに外部スクリプトで関数を呼び出しています

ここに私のHTMLコードがあります:

<body>
    <script>
    $(document).ready(function () {
    //on add buttton depressed, fire event which calls the initializer function
    $('#form3').on('click','button',function () {
    var ans = $(initializer());
    $('#form6').text(ans); 
    });
});
</script>   
<div id="wrapper">
<p>INPUT TEXT IN ROMAN NUMERALS</p>
<form id="form1" class="" >
    <input type="text" id="form2" class="" width="1"/>  
    <button name="button" id="form3" class=""> + </button> 
    <input type="text" id="form4" class="" />  
    <button name="button2" id="form5" class=""> = </button>
    <input type="text" name="result" id="form6" class=""></input>
</form>
</body>
</html>

#form3これは、ユーザーがボタンをクリックしたときに呼び出される外部 JavaScript ファイルにある関数ですID(要素に含めますhead) 。

function initializer ()
{
    //contains user input in first box
    var userinput_a  = $('#form2').val($(this).val().toUpperCase());
    //contains user input in second box  
    var userinput_b  = $('#form4').val($(this).val().toUpperCase());
    try
    {
    if(!validity(userinput_a, userinput_b))
    {
      throw exception;
    }
    }
    catch(err)
    {
        alert('Wrong values put in the right value');
    }

    var combinedtext = userinput_a + userinput_b;
    var stage1 = romanexpanded(combinedtext);   //text contains roman to expanded
    var stage2 = expandedtoroman(stage1);       //text contains expanded to roman

    return stage2;
}

http://jsfiddle.net/Dvgqu/2/

コードを調べましたが、関数を呼び出すボタンをクリックするたびに、入力ボックスの値が消えるたびに、スクリプトが正しく実行されていない原因がわからないようです。

どんな助けでも大歓迎です。ありがとう!

編集:私はjavascriptデバッグコンソールを使用しました.コードを見ていくと、イニシャライザ関数を呼び出す方法またはフォーム値にアクセスする方法のいずれかであると推測されます.唯一の問題は、何が問題なのかわかりません私の構文またはロジック。

4

2 に答える 2

2

ただ.text(stage2)$からの結果でラップする理由はありませんinitializer:

.text(initializer());

于 2013-03-16T21:29:23.127 に答える
0

あなたの代理人は間違っています。これ:

$('#form3').on('click','button',function () {
    var ans = $(initializer());
    $('#form6').text(ans); 
});

ボタン#form3 ので機能しません。@ user1737909 が述べているように、関数呼び出しを jQuery セレクターでラップしません。また、次の.val()方法を使用します。

$('#form3').on('click', function () {
    var ans = initializer();
    $('#form6').val(ans); 
});
于 2013-03-16T21:32:56.763 に答える