【问题标题】:Save result checkboxes checked in form into sqlite database with javascript使用javascript将表单中选中的结果复选框保存到sqlite数据库中
【发布时间】:2014-02-02 13:31:24
【问题描述】:

我的应用中有一个带有多个复选框的表单。我希望将选中复选框的结果(值)保存到数据库中的单独行中,见下文。问题是保存时,只有第一个(Ma)被保存,而其他的没有,即使在表单中检查。当 MA 没有被检查时,什么都没有发生......我使用 JqueryMobile/JavaScript/PhoneGap Build

表格:

<form name="test"> 
<label class="label_check" id="l1" for="ch1">Ma
<input class="custom" type="checkbox" name="checkgroup" id="ch1" value="Ma" />
</label>
<label class="label_check" id="l2" for="ch2">Di
<input class="custom" type="checkbox" name="checkgroup" id="ch2" value="Di" checked />
</label>
<label class="label_check" id="l3" for="ch3">Woe
<input class="custom" type="checkbox" name="checkgroup" id="ch3" value="Woe" />
</label>
<label class="label_check" id="l4" for="ch4">Do
<input class="custom" type="checkbox" name="checkgroup" id="ch4" value="Do" />
</label>
<label class="label_check" id="l5" for="ch5">Vr
<input class="custom" type="checkbox" name="checkgroup" id="ch5" value="Vr" checked />
</label>
<label class="label_check" id="l6" for="ch6">Za
<input class="custom" type="checkbox" name="checkgroup" id="ch6" value="Za" />
</label>
<label class="label_check" id="l7" for="ch7">Zo
<input class="custom" type="checkbox" name="checkgroup" id="ch7" value="Zo" />
</label>
</form>
</p>
<p>
<input type="button" name="saveData" id="btn1" value="Save" onclick="saveRecordSafety();"/>

Javascript:

function saveRecordSafety() {
//Write the record to the database
theDBbeter.transaction(insertRecordSafety, onTxErrorB, onTxSuccessB);
}

function insertRecordSafety(txb) {
var elementen = document.getElementsByName ("checkgroup");
var tmpChoise;
for (var r= 0; r < elementen.lenght; r++);
if (elementen[r].checked) {
tmpChoise = elementen[r].value; 
alert(tmpChoise);
var sqlStrB = 'INSERT INTO testSafetyBeter (beter) VALUES (?)';
txb.executeSql(sqlStrB, [tmpChoise], onSqlSuccess, onSqlError);
}
}

【问题讨论】:

    标签: javascript sqlite cordova checkbox


    【解决方案1】:

    我认为问题是因为你的 for 循环被分号终止:

    for (var r= 0; r < elementen.lenght; r++);
    

    试试这个:

    function insertRecordSafety(txb) {
    
    var elementen = document.getElementsByName ("checkgroup");
    var tmpChoise;
    
        for (var r= 0; r < elementen.length; r++)
        {
            if (elementen[r].checked) 
            {
                tmpChoise = elementen[r].value; 
                alert(tmpChoise);
                var sqlStrB = 'INSERT INTO testSafetyBeter (beter) VALUES (?)';
                txb.executeSql(sqlStrB, [tmpChoise], onSqlSuccess, onSqlError);
            }
        }
    }
    

    我还对内容进行了隔开以使其更易于阅读。

    【讨论】:

    • 嗨,Damon,感谢您的回答,但恐怕它不起作用,我什至没有收到 tmpChoise 的警报
    • @PowerStudio 抱歉在循环中发现了一个语法错误,它应该是长度而不是长度。更正了代码,再来一次?
    猜你喜欢
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 2015-10-25
    • 2012-03-15
    • 1970-01-01
    相关资源
    最近更新 更多