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);
}
}
有人可以帮我标记这篇文章吗?我似乎永远无法让代码块正确格式化。 =(
答案 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
onkeydown
属性中,而是更喜欢使用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.');
});
}