2010-10-06 91 views
0

我想知道是否有人可以请帮助我一个jQuery脚本。我正在使用MVC 2.通过添加文本框的值更新jQuery中的标签

我有2个文本框。当值输入到文本框中时,这些值的总和应显示在用户键入的标签控件中。因此,如果页面加载,则文本框为空,因此标签也必须为空(空白)。当用户键入一个像10那样的值时,应该在标签中显示10。如果用户输入5到另一个文本框中,则应该显示15。如果用户清除2个文本框,则标签应该再次变为空白。

我希望有人能帮助这里:)

感谢

回答

2
$('#textbox1, #textbox2').keyup(function() { 

    $('#label').html(''); 

    var val1 = $('#textbox1').val(); 
    var val2 = $('#textbox2').val(); 

    if(!isNaN(val1) && !isNaN(val2)) { 

     $('#label').html(parseInt(val1, 10) + parseInt(val2, 10)); 

    } 
}); 

UPDATE

为了适应您的评论,请参阅下面的变化。做了这个改变之后,我开始倾向于Reigel的答案,但也许修改0的结果总是被表示为一个空字符串。

$('#textbox1, #textbox2').keyup(function() { 

    $('#label').html(''); 

    var val1 = $('#textbox1').val(); 
    var val2 = $('#textbox2').val(); 

    if(!isNaN(val1) || !isNaN(val2)) { 

     $('#label').html((parseInt(val1, 10) || 0) + (parseInt(val2, 10) || 0)); 

    } 
}); 
+0

感谢。我是jQuery的新手。这段代码是否必须在$(document).ready(function(){})中? – 2010-10-06 08:40:43

+0

@Brendan Vogt:它通常是附加所有事件处理程序的最佳位置(例如'keyup'),所以我会将它放在'$(document).ready()'函数体中 – 2010-10-06 08:53:06

+0

@Brendan :是的,将它放入该函数意味着代码不会被执行,直到DOMReady事件被触发,这是您第一次保证有权访问页面中的所有DOM节点。将任何访问DOM节点的东西推迟到DOMReady总是最佳实践。 – 2010-10-06 08:56:56

1
$("#textBox1").keydown(function(event) { 
    updateLabel(); 
}); 
$("#textBox2").keydown(function(event) { 
    updateLabel(); 
}); 
function updateLabel() 
{ 
    var val = 0; 
    if(isNaN($("#textBox1").val()) && isNaN($("#textBox1").val())) 
    { 
     $("#myLabel").val(""); 
     return; 
    } 
    if(!isNaN($("#textBox1").val())) 
     val += $("#textBox1").val(); 
    if(!isNaN($("#textBox2").val())) 
     val += $("#textBox2").val(); 
    $("#myLabel").val(val); 
} 
1
$(document).ready(function() { 
    $('#num1, #num2').keyup(function(){ 
     var num1 = parseInt($('#num1').val(),10) || 0; 
     var num2 = parseInt($('#num2').val(),10) || 0; 
     $('label.sum').text((num1 + num2)|| '') 
    }); 
});​ 

fair demo

+0

这使得很多假设。任何可以是'parseInt':d的将是,而任何不能被视为'0'的。因此''a1'+'1a''会产生'1'。这也不能区分结果'0'是一个错误的结果。因此''1'+'-1''产生'''''。 – 2010-10-06 09:00:19

+1

哦,原来我提到的第一个假设似乎是OP想要的:) – 2010-10-06 09:42:57