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;
}

実際には、スニペットの 4 行目にあるように、要素ではなく値を「取得」します。

今、後でアプリケーションで値を設定しようとしています。

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()」を使用してチェックすることはできません。「checked」属性を変更してフォームデータをサーバー、ウェブサイトなどに送信すると機能します。val() は値 (value 属性) を変更したい場合にのみ使用できます。

したがって、私が正しく理解していれば、「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 に答える