2012-03-12 11 views
1

Iveにはドキュメントがあり、ユーザがある入力に何かを入力すると、2番目の入力ボックスに応答を表示する必要があります。私はユーザーに与えられた価値を得ることができます、私はそれを処理することができますが、私は結果と2番目の入力ボックスを設定しようとするとエラー$フィールドがnullです。コードは次のとおりです。MooToolsで入力フィールドを設定できないのはなぜですか?

$('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)); 
}); 

私は場所の価値を得ます。私はassoc配列からその場所の値段を引きます。私はその後、ユーザーの夜間のフィールドの量でその価格を倍数し、これは私の合計金額です。私が設定できないのはこの金額です。警告が正しい量を示していることに注意してください。

と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\'... 

任意のアイデア/提案誰ですか?前もって感謝します!

+0

私はMooToolsを使用していることに気付くかもしれません。 – JeremyS

+1

MooTools? jQueryではなく? MooToolsを使用している場合、なぜ質問にjQueryというタグが付けられていますか、タイトルにjQueryが表示されるのはなぜですか? '$( 'nights')。addEvent'はjQueryではありません。 MooToolsとjQueryを混乱させたり混乱させているようです。 –

+2

MooToolsの 'document.id'ショートカット(' $ places ') ')を使用していますが、後でjQuery(' $( "#pricepernight") ')を使用しています。 –

答えて

3

右。あなたはmootoolsとjqueryコードの組み合わせを使っているようです。 MooToolsは1.2+で

$('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)); 
}); 

、これは次のようになります。

$('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 - >id.val() - >set('value', 'newvalue') - または.get('value')

+0

ご回答ありがとうございます。物事は徐々に明確になってきています:)あなたの回答に先立って自分のコードを更新しました。私は今それを動作させることができる場合は表示されます! – JeremyS

+0

ええ、これをチェックしてください。 http://jsfiddle.net/RcTLu/ - 私はドロップダウンと値段の地図を簡単にするために一致したが、今はうまくいくことを証明する - 私はあなたのケースでは、物事はより複雑になると思う - 例えば緩いそれがマッチするまでhttp://jsfiddle.net/RcTLu/2/を入力してください。 –

+0

あなた、私の友人は素晴らしいです。素晴らしい例とサイト。私は十分な担当者があればあなたに+1します:Pありがとう! – JeremyS

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]何ですか?

+0

値[]は、価格の束とassoc配列です。ユーザはint(1〜10)を入力し、どの場所を選択するかを選択します。 (私は知っている...しかし、これはクライアントがそれをやりたいと思う方法です)。ユーザーが与えたインデックスに基づいて価格が配列から引き出されます。 – JeremyS

+0

@JeremyS ok ..... :) –

+0

FYI []表記を使用するのとは対照的に、ドット記法を使用すると読みやすいと感じるので、var price = values [places]はvar price = values.placesになる可能性がありますなんらかの理由で値を設定するのが好きです。場所は未定義です。さらに一歩進んでprice = values.placesを実行できます。 0; 0は任意の整数にすることができますが、デフォルトの文字列を配置するには引用符で囲むことができます。 –

0

ここにはいくつかの間違いがあります。

  1. まず、あなたのIDに基づいて選択するように#記号を使用する必要があり、HTMLから値を読み取るために

    場所や夜などのチェックhttp://api.jquery.com/id-selector/

  2. 第二に、valのを(使用)の属性むしろ 値よりもコントロール

    チェックhttp://api.jquery.com/val/

+0

こんにちは、お返事ありがとうございます。私はIDを "pricepernight"で入力フィールドにアクセスするために#を使用します。これはあなたが意図したものではないのですか? – JeremyS

+0

あなたはid "pricepernight"では正しく動作しますが、id "places"と "nights"では正しく動作しません。文字列では動作しませんし、不自然な出力を与えるかもしれない計算をしているので、数値(http://docs.jquery.com/Types#Parsing_Numbers)を解析する必要があります。 –

関連する問題