0

已编辑

我有一个表单(我正在使用其他人的代码库,并且找不到表单本身的实际名称,这使得这变得更加困难),现在我有 2 个字段需要在 JavaScript 调用中使用。

我有一个输入框(其中有 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

您将看到错误声明getTotal不是函数的原因是因为您+在构建 strURL 时省略了 a。这将导致解析错误,并且尝试访问会getTotal导致 ReferenceError。

几点评论:

  • 您的无线电<input>标签不应该相同id;任何两个元素都不应该共享一个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 回答
1

的定义中有错字strURL,可能会导致:

var strURL="display/getTotal.php?value="+value+"&taxes="taxes;
我通常在浏览器中打开控制台窗口并检查是否有类似的错误。

编辑:

您所有的单选按钮都具有相同的 ID。您需要解决这个问题,请参见此处的示例:如何检查是否使用 JavaScript 选择了单选按钮?

于 2012-06-30T00:09:05.660 回答