使用Cordova 2.5.0,我使用以下函數獲取HTML頁面中的所有<input>
元素。使用相同的jQuery函數設置不同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()
獲得值,爲什麼不設置它呢?
所以簡短的回答是:「不,你不能,你應該處理所有不同的元素類型(用switch語句或其他)」? – stealthjong
是的,正是:) –