为什么我不能用MooTools设置我的输入字段?

时间:2012-03-12 14:56:52

标签: javascript forms events input mootools

我有一个文档,当用户在一个输入中输入内容时,我需要在第二个输入框中显示一个响应。我可以得到用户给定的值,我可以处理它,但是当我尝试设置第二个输入框的结果时,我得到错误$ .field为null。这是代码:

$('places').addEvent('keyup', function(){
    var places = $('places').value;
    alert("PLACE: "+places);
    var price = values[places];
    var nights = $('nights').value.toInt();
    alert("NIGHTS: "+nights);
    var total = price * nights;
    alert("TOTAL: "+total);
    $('pricepernight').set('text', total);
    $('pricetotal').set('text', total - ((total / 100) * 21));
});

所以我得到了地方价值。我把这个地方的价格从一个关联数组中拉出来。然后我按照用户的夜晚数量将该价格加倍,这就是我的总金额。这是我无法设定的金额。请注意,警报显示正确的金额。

,html看起来像这样

<div class='block'>
    <input type="text" id="places" />
</div>

<div class='block'>
    <label for="nachten">Aantal nachten</label>
    <input type="text" id="nights" />
</div>

<div class='block long'>
    <span class='label'>Prijs per slaapplaats per nacht</span>
    <input type="text" class='resultfield' id='pricepernight' />
</div>
<div class='block last'>
    <span class='label'>Totaalprijs excl. btw</span>
<input type="text" class='resultfield' id='pricetotal'/>
</div>

Firebug回应:

String contains an invalid character
[Break On This Error]   

...x:\'4W\',3X:18.1l,al:18.1l,1Q:18.1l,as:18.1l,8S:18.1l,1F:O,3E:{x:\'1u\',y:\'1o\'...

任何人的想法/建议?先感谢您!

3 个答案:

答案 0 :(得分:3)

右。你似乎使用了mootools和jquery代码的混合。

$('nights').addEvent('keyup', function(){
    var places = $('places').value;
    var price = values[places];
    var nights = $('nights').value;
    var total = price * nights;
    alert(total);
    $('#pricepernight').val(total);
    //$('#pricetotal').val(total - ((total / 100) * 21));
}); 

在mootools 1.2+中,这应该是:

$('nights').addEvent('keyup', function(){
    var places = $('places').get('value');
    var price = values[places];
    var nights = $('nights').get('value');
    var total = price * nights;
    alert(total);
    $('pricepernight').set('value', total);
    //$('#pricetotal').val(total - ((total / 100) * 21));
}); 

有一个隐含的全局数组值。此外,这不是很安全,因为夜晚可能不是整数。

重点是。 #id - &gt; id.val() - &gt; set('value', 'newvalue') - 或.get('value')

答案 1 :(得分:0)

试试这个

$('#nights').keyup(function(){
    var places = $('#places').val();
    var price = values[places];
    var nights = $('#nights').val();
    var total = parseInt(price) * parseInt(nights);
    alert(total);
    $('#pricepernight').val(total);
    //$('#pricetotal').val(total - ((total / 100) * 21));
});

什么是values[places]

答案 2 :(得分:0)

这里有一些小错误。

  1. 首先,您应该根据您的ID属性使用#符号进行选择 喜欢的地方和夜晚

    检查http://api.jquery.com/id-selector/

  2. 其次,使用val()来读取html控件的值     比价值

    检查http://api.jquery.com/val/