2012-06-29 2 views
0

EDITEDПрием 2 входных значений в Javascript

У меня есть форма (я использую чужой код базы, и не может найти реальное имя самой формы, которая делает это сложнее), и прямо сейчас у меня есть 2 поля, которые необходимы в вызове JavaScript.

У меня есть окно ввода (которое имеет вызов JavaScript getTotal и отправляет значение с помощью onkeydown (this.value)), и у меня есть выбор переключателя. Мне нужно знать, как отправить значение кнопки вместе с входным значением функции JavaScript.

Если я пытаюсь найти значение в функции «getTotal» с помощью:

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

Я получаю сообщение об ошибке «Не удается преобразовать„document.getElementById (“Add-EVENT-диалоговые налоги„)“в объект».

Если я использую:

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

Вызов: 'getTotal (this.value, document.add-event-dialog-tax.value) ' Определение: 'getTotal (значение)' Синтаксис вызова имеет два аргумента, и определение принимает только один. Это может привести к тому, что ваша проблема «getTotal не является функцией». – ShaggyInjun

+0

Если конкретный ответ полезен при решении вашей проблемы, отметьте его как «принятый», щелкнув маленькую галочку рядом с ним. Если ваши вопросы получают бесполезные ответы, уточните, что вы ищете, или оставляйте конструктивные комментарии к ответам, объясняющим, как они падают. –

ответ

1

есть опечатка в определении strURL, что может вызвать его:

var strURL="display/getTotal.php?value="+value+"&taxes="taxes;
Я обычно открыть окно консоли в браузере и проверьте, есть ли какая-либо ошибка, как это

EDIT:.

Все ваши радио кнопки имеют одинаковый идентификатор вы должны установить, что, смотри, например, здесь:. How can I check whether a radio button is selected with JavaScript?

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.'); 
    }); 
} 
+0

Ничего не случилось с этим кодом. Я даже сделал это, когда вы делаете какие-либо изменения, которые он будет показывать, и ничего не изменилось, когда я добавил значение для него. Я также добавил в «+», что мне не хватало раньше, и у меня все еще возникают проблемы. См. Приведенные выше изменения. – Nicole

+0

@Nicole, если вам нужна дополнительная помощь, отправьте код проблемы, чтобы помещать эту проблему в контексте в jsFiddle или что-то в этом роде. –

+0

@Nicole, все ваши флажки имеют одинаковый идентификатор. Я отредактировал свой ответ. – akonsu

Смежные вопросы