2016-09-05 6 views
0

私は、次のHTMLコードを変数として格納されているがあるにもかかわらず、jQueryを使って特定の要素を見つけることができませんフォーム内の入力に基づいて各フィールドの$ valueの値を変更し、最終的なhtmlをiFrameの内部にレンダリングします。ここでは、彼らが

は、私がこれを行うために使用していますJavaScriptコードです:

function renderTemplate() { 
    var template = $(selectedTemplate.html).contents(); //HTML code I have given above. 
    $("input").each(function(index, input) { 
     var element = $(input); //<input type="text" ref="Contact Name"> 
     if (element.attr("ref")) { 
      var reference = element.attr("ref"); 
      var field = template.find("field[id='" + reference + "']"); 
      if (typeof(field) != undefined) { 
       var exists = field.find("exists"); 
       var notExists = field.find("notexists"); 
       if (typeof(exists) != undefined && typeof(notexists) != undefined) { 
        if (element.val()) { 
         exists.html(exists.html().replace("$value", element.val())); 
        } else { 
         exists.html(notExists.html()); 
        } 
        $('#signaturePreview').contents().find('html').html(template.html()); 
       } 
      } 
     } 
    }); 
} 

今どんな理由であれ、それは私が与えているセレクタでフィールドを見つけることができません。

私はクロームコンソールでいくつかのテストを行なったし、それは私が使用した場合でも、一切のフィールドを見つけることができません。

template.find("field") // Gives 0 results. 
+0

htmlには入力がありません。コンソール部分はどこですか? – guradio

+0

これらは有効なHTMLタグではありません。最初は使用しないでください。 – Roberrrt

+0

@guradioこれは私の実際のページのhtmlではなく、私が変更しているhtmlだからです。入力はそこにあります、私を信頼してください。 – ThePerplexedOne

答えて

0

$("#..").contents().find("..")はいつもすなわち、.contentsを使用していない、空の配列を返します。 :

var template = $(selectedTemplate.html); 

は、他のいくつかの問題に対処するには、次のIDで

1のスペースをは有効なHTMLではありませんが、の場合は[id=https://stackoverflow.com/a/701958/2181514を使用して選択してください。

2 jquery .findは、一致するものが見つからない場合はでなく、undefinedでない配列を返します。ノーマルチェックの長さは、たとえば:

var items = $("body").find("li.item"); 
if (items.length > 0) { 
    ...