0

編集済み

フォームがあり(他の人のコードベースを使用していますが、フォーム自体の実際の名前が見つからないため、これが難しくなっています)、現在、JavaScript呼び出しに必要な2つのフィールドがあります。

入力ボックス(JavaScript呼び出し'getTotal'があり、onkeydown(this.value)で値を送信しています)があり、ラジオボタンを選択しています。ボタンの値と入力値をJavaScript関数に送信する方法を知る必要があります。

次を使用して「getTotal」関数内の値を見つけようとすると、次のようになります。

var taxes = document.getElementById('add-event-dialog-taxes').checked.val();

「'document.getElementById(' add-event-dialog-taxes')'をオブジェクトに変換できません」というエラーが表示されます。

私が使用する場合:

var taxes = $("input[name='add-event-dialog-taxes']:checked").val();

エラーは発生しませんが、値がAJAXページに渡されていません。

ボタン値の検索を除外すると、関数は正しく機能します。

フィールドは次のとおりです。

<input type="text" id="add-event-dialog-subtotal" style="width:100px" placeholder="0.00" onkeydown="getTotal(this.value)"><input type='radio' name='add-event-dialog-taxes'  value='gstpst' checked/> GST + PST</br>
<input type='radio' name='add-event-dialog-taxes' value='gst'/> GST Only</br>
<input type='radio' name='add-event-dialog-taxes' value='pst' /> PST Only </br>
<input type='radio' name='add-event-dialog-taxes' value='none'/> No Taxes`

関数は次のとおりです。

function getTotal(value) {  
    //var taxes = document.getElementById('add-event-dialog-taxes').checked.val();
    //var taxes = $("input[name='add-event-dialog-taxes']:checked").val();

    var strURL="display/getTotal.php?value="+value+"&taxes="+taxes;
    var req = getXMLHTTP();

    if (req) {
        req.onreadystatechange = function() {

            if (req.readyState == 4) {
                // only if "OK"
                if (req.status == 200) {                        
                    document.getElementById('getTotal').innerHTML=req.responseText;                 
                } else {
                    alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                }
            }               
        }           
        req.open("GET", strURL, true);
        req.send(null);
    }       
}

そして、誰かが私がこの投稿をマークアップするのを手伝ってくれませんか?コードブロックを正しくフォーマットすることができないようです。=(

4

2 に答える 2

1

の定義にタイプミスがありstrURL、それが原因である可能性があります:

var strURL="display/getTotal.php?value="+value+"&taxes="taxes;
私は通常、ブラウザでコンソール ウィンドウを開き、このようなエラーがないかどうかを確認します。

編集:

すべてのラジオ ボタンの ID は同じです。これを修正する必要があります。たとえば、こちらを参照してください: JavaScript でラジオ ボタンが選択されているかどうかを確認するにはどうすればよいですか?

于 2012-06-30T00:09:05.660 に答える
1

getTotal関数ではないと主張するエラーが表示される理由は、 +strURL を構築するときに a を省略したためです。これにより解析エラーが発生し、アクセスしようとするとgetTotalReferenceError が発生するはずです。

いくつかのコメント:

  • あなたの無線<input>タグは同じであってはなりませんid。2 つの要素を共有してはなりませんid
  • 属性に JavaScript を配置することは避けonkeydown、代わりに jQuery を使用してハンドラーをアタッチすることをお勧めします。
  • たとえば、jQuery には、インスタンスを取得してすべての作業を処理ajaxする関数があります。XMLHttpRequest

これはあなたのために働くはずの例です(テストされていません):

HTML:

<input type="text" id="add-event-dialog-subtotal" style="width:100px" placeholder="0.00">
<input type='radio' name='add-event-dialog-taxes' value='gstpst' checked/> GST + PST</br>
<input type='radio' name='add-event-dialog-taxes' value='gst'/> GST Only</br>
<input type='radio' name='add-event-dialog-taxes' value='pst' /> PST Only </br>
<input type='radio' name='add-event-dialog-taxes' value='none'/> No Taxes`

JavaScript:

$('#add-event-dialog-subtotal').keypress(function () {
    var value = $(this).val(),
        taxes = $('input:radio[name=add-event-dialog-taxes]:checked').val();
    $.ajax({
        url: 'display/getTotal.php?value=' + value + '&taxes=' + taxes
    }).done(function (data) {
        $('#getTotal').html(data);
    }).fail(function () {
        alert('There was a problem executing the AJAX request.');
    });
}
于 2012-06-30T00:18:59.243 に答える