在Javascript中接受2个输入值

时间:2012-06-29 23:50:36

标签: javascript ajax events

EDITED

我有一个表单(我正在使用其他人的代码库,并且无法找到表单本身的实际名称,这使得这更难),而且现在我在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);
    }       
}

有人可以帮我标记这篇文章吗?我似乎永远无法让代码块正确格式化。 =(

2 个答案:

答案 0 :(得分:1)

strURL的定义中有一个拼写错误,可能会导致错误:

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

编辑:

所有单选按钮都具有相同的ID。您需要解决此问题,例如请参阅此处:How can I check whether a radio button is selected with JavaScript?

答案 1 :(得分:1)

您发现声明getTotal的错误的原因不是函数,因为您在构建strURL时省略了+。这将导致解析错误,并且尝试访问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.');
    });
}