簡體   English   中英

通過 AJAX 使用沒有 Jquery 的普通 Javascript 提交表單獲取選中的單選按鈕值

[英]Submit form via AJAX using plain Javascript without Jquery get checked radio button value

我確實有使用普通 Javascript 通過 AJAX 提交的 HTML 表單:

function XMLhttp(){
    var formInputs = document.getElementById(formID).querySelectorAll("input, textarea");

    var selectFormGebdat = formID;

    var toCheckDatesFields = document.getElementsByClassName("checkDate");
    for (var i = 0; i < toCheckDatesFields.length; i++) {
        if(toCheckDatesFields.item(i).value != '') {
            var returnValue = validatedate(toCheckDatesFields.item(i));
            if(returnValue == false) {
                return false;
            }
        }
        
    }
                                                 
    var httpRequest = new XMLHttpRequest();
    var formData = new FormData();

    for( var i=0; i < formInputs.length; i++ ){
        formData.append(formInputs[i].name, formInputs[i].value);
    }

    httpRequest.onreadystatechange = function(){
        if ( this.readyState == 4 && this.status == 200 ) {
            resultData = JSON.parse(this.responseText);

            if(resultData.success == true) {
                document.getElementById('resultok').className += ' show';
            }
            else {
                document.getElementById('resulterror').className += ' show';
            };
           
        }
    };

    httpRequest.open(formMethod, formAction);
    httpRequest.send(formData);
}

selectButton.onclick = function(){
    XMLhttp();
}

selectForm.onsubmit = function(){
    return false;
}

我的問題是,我有單選按鈕和選擇框。 但未提交所選值。 前任

<input type="radio" name="typ" value="anfrage"><input type="radio" name="typ" value="reservierung">

如果選中了 anfrage,則腳本不會提交此值 - 總是有 reservierung 提交。

感謝幫助! 馬丁

我可以通過以下方式解決這個問題:

var formData = new FormData();
if (!form || form.nodeName !== "FORM") {
    return;
}
var i, j, q = [];
for (i = form.elements.length - 1; i >= 0; i = i - 1) {
    if (form.elements[i].name === "") {
        continue;
    }
    switch (form.elements[i].nodeName) {
    case 'INPUT':
        switch (form.elements[i].type) {
        case 'text':
        case 'hidden':
        case 'password':
        case 'button':
        case 'reset':
        case 'submit':
            formData.append(form.elements[i].name, form.elements[i].value);
            break;
        case 'checkbox':
        case 'radio':
            if (form.elements[i].checked) {
                formData.append(form.elements[i].name, form.elements[i].value);
            }                       
            break;
        case 'file':
            break;
        }
        break;           
    case 'TEXTAREA':
        formData.append(form.elements[i].name, form.elements[i].value);
        break;
    case 'SELECT':
        switch (form.elements[i].type) {
        case 'select-one':
            formData.append(form.elements[i].name, form.elements[i].value);
            break;
        case 'select-multiple':
            for (j = form.elements[i].options.length - 1; j >= 0; j = j - 1) {
                if (form.elements[i].options[j].selected) {
                    formData.append(form.elements[i].name, form.elements[i].value);
                }
            }
            break;
        }
        break;
    case 'BUTTON':
        switch (form.elements[i].type) {
        case 'reset':
        case 'submit':
        case 'button':
            formData.append(form.elements[i].name, form.elements[i].value);
            break;
        }
        break;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM