2009-06-19 19 views
1

私は動的にフォームフィールドを作成しています。jQueryと動的に生成されたフォーム


私は

<script> 
$().ready(function() { 

    $("input[name=salesPrice1]").blur(function() { 

     var nameID = $("input[name=salesPrice1]").val(); 

     alert(nameID); 

     //var newName = $("input#newName").val(); 

     $.ajax({ 
      type: "POST", 
      url: "cashPrice.cfm", 
      data: "salePrice=" + $("input[name=salesPrice1]").val(), 
      cache: false, 
      success: function(data) { 
       $("#cashPrice1").html(data); 
      } 
     }); 
    }); 
}); 
</script> 

を使用する場合には、部分的に動作します。さて、formFieldのID/Nameを動的に取得する必要があります。これはどうすればいいですか?

+0

あなたの質問は意味がありません。それを更新してください。 – roosteronacid

+0

申し訳ありませんが、私はformFieldのID /名前、動的にmenaと呼ぶものは何もわかりません。 – glmxndr

+0

何とか私のサーバーサイドコードを投稿しませんでした。 $:私は

いくつかのColdFusionループ... の
CFNinja

答えて

3

これを試してみてください。

$("input[name^=salesPrice]").each(function(){ 
    var input = $(this); 
    var name = input.attr('name'); 
    var num = /\d+$/.exec(name)[0]; 

    $(this).blur(function() { 

     var nameID = input.val(); 

     alert(nameID); 

     //var newName = $("input#newName").val(); 

     $.ajax({ 
     type: "POST", 
     url: "cashPrice.cfm", 
     data: "salePrice=" + nameID, 
     cache: false, 
     success: function(data) { 
      $("#cashPrice"+num).html(data); 
     } 
     }); 
    }); 
}); 
+0

私は変更しなければならなかった: data: "salePrice =" + input.val()、 – CFNinja

+0

Wups ...それでは、すでに計算されているnameIDを使ってみましょう。答えを編集しました。 :) – glmxndr

1

あなたの質問は最高でも曖昧です。しかし、これはやや何をしたい?:

$("input").blur(function() 
{ 
    var that = $(this); 

    var id = that.attr("id"); 
    var name = that.attr("name"); 
}); 



が更新のラインに沿っている:あなたは値の要素を一致させることができます

$("input[id^='hello']") 

は一致します。

<input type="text" id="helloworld" /> 
<input type="text" id="helloearth" /> 

でもない:

<input type="text" id="hiworld" /> 

selector documentationを参照してください。

注意:これらのセレクタは遅く、私は最後の手段としてそれらを使用します。パフォーマンスを向上させるために、DOMノードのサブセットでクエリを実行できます。

$("complex selector goes here", $("container node in which to query")) 
+0

このサイトでコードの書式設定に問題があります。私は、次の

私は#」の値= 『』 />

私は、この関数は唯一salesPriceに適用する必要があるため、私は単に$( 『入力』)を使用することができないと思います。 – CFNinja

+0

また、ページが読み込まれたときに警告(1)が表示されますが、それ以外は表示されません。 – CFNinja

0

これも動作します:

<html> 
<script type="text/javascript"> 
    $().ready(function() { 
     alert('loaded'); 
     $('.salesPriceInput').blur(function() 
     {  
      alert($(this).attr("id")); 
      var myID = $(this).attr("id").substr(10,1); 
      alert(myID); 
      $.ajax({ 
       type: "get", 
       url: "cashPrice.cfm", 
       data: "salePrice=" + $('#salesPrice'+myID).val(), 
       cache: false, 
       success: function(data){ 
        $('#cashPrice'+myID).html(data); 
       } 
      }) 
     }); 
    }); 
</script> 


<form> 
    <cfoutput> 
     <cfloop from="1" to="3" index="i"> 
      <input type="text" name="salesPrice#i#" id="salesPrice#i#" class="salesPriceInput" value="" /> 
      <div id="cashPrice#i#"></div> 
      <hr /> 
     </cfloop> 
    </cfoutput> 
</form> 
+0

テキストエディタは、私が

<入力タイプ= "テキスト" 名前= "salesPrice#<= "3" インデックス= "I" に= "1" からのcfloop>を追加するためのもの、私の を無視し続けます私は#」idは= "salesPrice#I#" クラス= "salesPriceInput" 値= "" />

CFNinja

+0

あなたが行をスキップしてのフォーマッタのために、少なくとも4つのスペースでコードをインデントする必要がありコードをフォーマットします。 substrには注意してください:ある日、あなたはcoldfusionファイルの名前を変更して、JavaScriptコードを更新することを忘れてしまいます。あなたの頭をかなり傷つけるでしょう。 – glmxndr

+0

あなたの答えを編集して書式を修正しました。適切にレンダリングするには、コードの前に4つのスペースを入れる必要があります。 –

関連する問題