1

使用 Cordova 2.5.0,我使用以下函数获取<input>HTML 页面中的所有元素。

function getInput() {
   var formElements = new Object();
   $("form :input").each(function(){
       formElements[this.name] = $(this).val(); //that's this line
   });
   return formElements;
}

实际上,我不是“获取”元素,而是值,正如您在代码片段的第四行中看到的那样。

现在,我试图稍后在应用程序中设置这些值。

function insertResults(data) { //data is a json string
    console.log("in insertResults (JS): " + data);
    var jso = JSON.parse(data);
    for (var key in jso) {
        addContentToElement(key, jso[key]);    
    }
}

function addContentToElement(elementname, valuetoset) {
    $(function() {
        $("input[name='" +elementname +"']").val(valuetoset);
    });
}

关于这个的console.log()印刷品:in insertResults (JS): {"checkbox3":"","textfieldmulti1":"some text","textfield1":"some more text","boxed1":"even more text","checkbox1":"on","checkbox2":"on"}

以上代码适用于 html 文本字段。但是,如果可能的话,我也想设置复选框等的值,我有点希望.val(value)能做到这一点,毕竟,我也可以用 检索元素的值.val(),甚至可以从其他元素中检索,比如一个复选框。我宁愿不检查我想要添加内容的每个元素,并根据元素类型,使用正确的 jQuery 方法来设置元素的值。

有什么方法或方法可以实现这一目标?

(澄清一点:)addContentToElement("checkbox3", "on");不起作用,虽然我从元素中检索on.val()addContentToElement("textfield1", "some text")确实如此。而且我知道我可以用.prop('checked', true), 或来做到这一点.attr('checked', true),但是既然我可以用 来获得价值.val(),为什么不设置呢?

4

1 回答 1

2

您不能使用“val()”检查复选框和单选框,因为它们与文本框不同。当您更改“已检查”属性以将表单数据发送到服务器、网站等时,它们会起作用。仅当您想更改值(值属性)时才可以使用 val()。

因此,如果我理解正确,您想在“addContentToElement”函数获得“on”值时更改复选框。我更改了您的代码,您可以使用下面的代码。

function addContentToElement(elementname, valuetoset) {
 $(function() {
     if (valuetoset === "on") {
       $("input[name='" +elementname +"']").attr('checked', true);
     } else {
       $("input[name='" +elementname +"']").val(valuetoset);
     }
 });
}

但是您应该将类​​型发送到函数以查找复选框的输入。

于 2013-05-18T16:47:50.200 回答