2010-04-18 17 views
12

मुझे गतिशील रूप से बनाए गए इनपुट (फिर से jQuery के साथ बनाया गया) के साथ jQuery स्वत: पूर्ण का उपयोग कर कोई समस्या है। मैं नए इनपुट से जुड़ने के लिए स्वत: पूर्ण नहीं हो सकता। पृष्ठ के बाद लोड किया गया हैगतिशील रूप से बनाए गए इनपुट के लिए jQuery स्वत: पूर्ण

स्वत: पूर्ण

 $("#description").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: "../../works_search", 
       dataType: "json", 
       type: "post", 
       data: { 
        maxRows: 15, 
        term: request.term 
       }, 
       success: function(data) { 
        response($.map(data.works, function(item) { 
         return { 
           label: item.description, 
           value: item.description 
         } 
        })) 
       } 
      }) 
     }, 
     minLength: 2, 
    }); 


नई तालिका

var i = 1; 
var $table = $("#works"); 
var $tableBody = $("tbody",$table); 

$('a#add').click(function() { 
    var newtr = $('<tr class="jobs"><td><input type="text" name="item[' + i + '][quantity]" /></td><td><input type="text" id="description" name="item[' + i + '][works_description]" /></td></tr>'); 
    $tableBody.append(newtr); 
    i++; 
}); 

मुझे पता है समस्या यह है कि कर रहा हूँ सामग्री के कारण जानकारी के साथ पंक्ति बनाया जा रहा लेकिन मैं यह नहीं समझ सकता कि इसे कैसे प्राप्त किया जाए। मैंने कई संबंधित प्रश्न पढ़े हैं और jQuery लाइव विधि में आ गए हैं लेकिन मैं अभी भी जाम में हूं!

कोई सलाह?

उत्तर

24

सबसे पहले आप .autocomplete() तरह के लिए विकल्प स्टोर करने के लिए चाहता हूँ:

var autocomp_opt={ 
     source: function(request, response) { 
      $.ajax({ 
       url: "../../works_search", 
       dataType: "json", 
       type: "post", 
       data: { 
        maxRows: 15, 
        term: request.term 
       }, 
       success: function(data) { 
        response($.map(data.works, function(item) { 
         return { 
           label: item.description, 
           value: item.description 
         } 
        })) 
       } 
      }) 
     }, 
     minLength: 2, 
    }; 

ऐसा लगता है, input अंकन के लिए class विशेषता का उपयोग करने के लिए अधिक साफ है:

<input type="text" class="description" name="item[' + i + '][works_description]" /> 

अंतिम, जब आप .autocomplete() को .autocomplete() पर पहले से संग्रहीत विकल्पों के साथ .autocomplete() लागू करें:

$('a#add').click(function() { 
    var newtr = $('<tr class="jobs"><td><input type="text" name="item[' + i + '][quantity]" /></td><td><input type="text" class="description" name="item[' + i + '][works_description]" /></td></tr>'); 
    $('.description', newtr).autocomplete(autocomp_opt); 
    $tableBody.append(newtr); 
    i++; 
}); 
+1

यह एक आकर्षण की तरह काम करता है, धन्यवाद! – Jamatu

0

मैंने पाया कि मैं संलग्न इतना के बाद तेह स्वत: पूर्ण डाल करने के लिए की जरूरत:

$tableBody.append(newtr); 
$('.description', newtr).autocomplete(autocomp_opt); 
संबंधित मुद्दे