2010-10-14 5 views
6

में एक अजीब त्रुटि दे रहा है, मैं $.ajax() के माध्यम से एक JSON प्रतिक्रिया पार्स कर रहा हूं और इस ऑब्जेक्ट के मानों से एक फॉर्म बना रहा हूं। स्क्रिप्ट मैं लिखा है लंबे समय तक है, लेकिन यहाँ यह क्या कर रहा है:एक बटन तत्व पर jQuery .attr ('type', 'submit') मुझे आईई 7

  1. गतिशील रूप से बनाने:
    ~ एक ऐसा फ़ॉर्म तत्व,
    ~ एक fieldset तत्व,
    ~ एक बटन तत्व,
    ~ 20 या तो पाठ इनपुट और लेबल तत्वों

  2. fieldset

  3. को इनपुट और लेबल में जोड़ देने के लिए बटन जोड़ fieldset

  4. रूप

  5. मौजूदा डोम में एक तत्व के रूप में जोड़ देने के लिए fieldset जोड़।

आईई में एक छोटा सा स्निपेट को छोड़कर सबकुछ सभी ब्राउज़रों में काम कर रहा है। मैंने इसे कोड के निम्नलिखित भाग तक सीमित कर दिया है।

fieldset.append(
    $(doc.createElement('button')) 
     .addClass('ui-button') 
     .attr('type', 'submit') 
     .html('Re-Rate') 
     .button() 
); 

यह ऊपर से चरण 3 है (docdocument युक्त एक चर है)। यह एक बटन तत्व बनाता है, एक वर्ग जोड़ता है, type विशेषता submit पर सेट करता है, इसे कुछ पाठ देता है, और उसके बाद इसे फ़ील्ड में जोड़ता है।

fieldset.append(
    $(doc.createElement('button')) 
     .addClass('ui-button') 
     //.attr('type', 'submit') 
     .html('Re-Rate') 
     .button() 
); 

सब कुछ उम्मीद के रूप में काम करता है: आईई त्रुटि के साथ विफल

अगर मैं बाहर टिप्पणी .attr() लाइन इस तरह "ऑब्जेक्ट इस कार्रवाई का समर्थन नहीं करता"।

आप सोच रहे हैं, तो .button() विधि jQuery यूआई

+0

अगर आप 'doc.createElement()' यह पहली बार है, यह प्रकार में आवंटित क्या होता है सादा जेएस, और फिर इसे एक jQuery ऑब्जेक्ट में बदल दें? बस यह पता लगाने के लिए कि समस्या किस चरण में है? –

+1

आप एक jQuery टेम्पलेटिंग [इंजन] (http://github.com/nje/jquery-tmpl) का उपयोग करने के बारे में सोच सकते हैं - [उदाहरण] (http://weblogs.asp.net/scottgu/archive/2010/ 05/07/jquery-templates-and-data-linking-and-microsoft-योगदान-to-jquery.aspx) –

+0

अच्छा विचार जॉन। पेकका, प्रति निक के जवाब में यह jQuery-by-Design प्रतीत होता है। – Stephen

उत्तर

10

jQuery doesn't allow you to change the type of an <input> or <button> element है।

इसका कारण स्थिरता है, और आईई आपको डीओएम में डालने के बाद type बदलने की अनुमति नहीं देता है।

+1

दिलचस्प! उसे नहीं पता था। एक गतिशील रूप से '<बटन प्रकार =" सबमिट ">' कैसे बनाएगा? – Stephen

+0

तकनीकी रूप से मैंने इसे अभी तक डोम में नहीं डाला है ... – Stephen

+4

@ स्टीफन - सही, लेकिन jQuery सभी मामलों में इसे अस्वीकार करता है, भले ही आईई आपके उदाहरण में ठीक रहे। तत्व बनाने के लिए इसे तत्व HTML के साथ बनाएं: '$ ('

0

jQuery आपको मौजूदा बटन तत्व पर type विशेषता को संशोधित करने नहीं देगा क्योंकि आईई ऐसा करने का प्रयास करते समय त्रुटि उत्पन्न करता है।

हालांकि, आप इस (jQuery 1.4 के अधिक संक्षिप्त तत्व निर्माण सिंटैक्स का उपयोग) की तरह कुछ की कोशिश कर सकते हैं:

fieldset.append(
    $('<button>', {'type': 'submit', 'class': 'ui-button', 'html': 'Re-Rate'}).button() 
); 
+1

आप इस तरह का कोई तत्व नहीं बना सकते हैं, वाक्यविन्यास मान्य नहीं है, और यदि यह था यह एक त्रुटि फेंक देगा। आपके पास HTML स्ट्रिंग * और * प्रॉपर्टी ऑब्जेक्ट में विशेषताएँ नहीं हो सकती हैं (इसे आजमाएं :))। –

+0

ओह, मैंने अपना जवाब अपडेट कर दिया है ताकि यह अब काम करे। – gabriel

संबंधित मुद्दे