Javascript表单错误 - 脚本无法运行

时间:2013-03-16 21:27:28

标签: javascript jquery html

我正在测试我为计算器编写的脚本,我使用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>

这是我的函数,它位于外部JavaScript文件中,当用户单击#form3作为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调试控制台,并通过我的代码,我推断它是我调用初始化函数的方式或我访问表单值的方式,唯一的问题是我没有看到我的语法有什么问题或逻辑。

2 个答案:

答案 0 :(得分:2)

只需.text(stage2)。没有理由用$ initializer包裹.text(initializer());的结果。

{{1}}

答案 1 :(得分: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); 
});