1

誰かが私を助けてくれるのだろうか...残念ながら、私はJavascriptの知識がなく、理解するのが少し難しいと感じています。

私はホテル予約フォームに取り組んでいます、そしてこれは私がする必要があることです。ホテルを選択するオプションと、必要な宿泊日数のオプションがあります。

合計フィールドもあります。これは私が立ち往生しているところです。誰かがスクリプトで私を助けてくれますか、またはホテルの夜の時間の選択の式の合計を表示するために合計フィールドを取得するにはどうすればよいですか?

これは、他の値とともにphpフォームに投稿される値である必要もあります。この値は、値を含む電子メールを送信します。

これが私が作成したフォームへのリンクです:https ://www.alpinemalta.net/libyabuild2013/bookNow.html

私を助けてくれる人に感謝し、この分野の知識が不足していることをお許しください。

よろしく

クリス・ブラウン(マルタ)

4

1 に答える 1

2

あなたのフォームを見て、

1)合計宿泊日数のドロップダウンリストは冗長だと思います(合計宿泊日数は到着日と出発日から明らかです)

2)日付(JavaScriptで簡単に使用できるようにするため)では、「11/05/2013(A)」などの代わりに数値を使用します。

<select name="ArrivalDate" size="1" id="ArrivalDate">
<option>Please select</option>
<option value="1368399600">13-05-2013</option>
<option value="1368486000">14-05-2013</option>
...
</select>

3)1泊あたりの料金はどこにも気づきませんでしたか?ホテルのリストには、(ホテルと部屋の)テキストオプションの説明の代わりに、ID(h1a、h1b、h2a、h3a、h3b、h3cなど)を含めることもできます。

<select name="hotel_choice" id="hotel5">
<option value="nothing" selected="selected">None Selected</option>
<option value='nothing'>.</option>
<option value="h1a">Corinthia Single Room</option>
<option value="h1b">Corinthia Double Room</option>
<option value='nothing'>.</option>
...
</select>

そうすれば、JavaScriptはそれほど複雑ではないかもしれません(これらの変更を行い、各ホテルの価格をページソースに表示してもかまいません):

<script type='text/javascript'>
var prices={nothing:0,h1a:357,h1b:280.50,h2a:380}; //here are your hotel prices

function calculate() {
    var days = Math.round( ( 
            document.getElementById('datedepart').value - 
            document.getElementById('ArrivalDate').value 
        ) / 86400 ); //timestamp is in seconds
    document.getElementById('total_cost').value = 
        days * 
        prices[ document.getElementById('hotel5').value ];
}
</script>

コードには何の問題もないことに注意してください。これは、日付が代表的な整数値(php関数time()によって返されるものなど)に変更されるという仮定に基づいています。また、エラーが発生した可能性もあります。要素のID名で

次に残っているのは、「calculate();」を接続することです。すべてのコントロールのonchangeイベントへのjavascript関数があれば完了です。

<select name="hotel_choice" id="hotel5"  onchange='calculate();'>
...
</select>

<select name="ArrivalDate" size="1" id="ArrivalDate" onchange='calculate();'>
...
</select>

出発日セレクターでも同じです。

編集:

日付セレクターで日付を使用することもできますが、次のようなものを使用して、その文字列を数値クライアント側に解析する必要があります。

var dt=Date.parse(document.getElementById('ArrivalDate').value);

ただし、この関数でサポートされている日付形式を確認してください。また、1970年以降のミリ秒数が返されるため、86400ではなく86400000で除算する必要があります。

編集-日付の確認が記入されています

function calculate() {
var dd=document.getElementById('datedepart');
var da=document.getElementById('ArrivalDate');
var total=document.getElementById('total_cost');
var hotel=document.getElementById('hotel5');

//no hotel room selected or not depart date set or not arrival date set
//or departing before arrival (nonsense) - set total to ZERO and exit the function

if ( !(dd.value*1) || !(da.value*1) || da.value>dd.value ) {
    total.value='0';//you can set it to 'not allowed' also if you wish (instead of '0')
    return;
}

var days = Math.round( ( 
        dd.value - 
        da.value 
    ) / 86400 ); //timestamp is in seconds
var cost = days * prices[ hotel.value ];
if (isNaN(cost))
    cost = 0; //or set to "invalid input" - but this line should not be needed at this point
total.value = cost;
}
于 2013-03-15T11:19:44.390 に答える