2016-03-22 14 views
0
require(["dijit/form/Button", "dojo/dom", "dojo/domReady!"], function(Button, dom){ 

    // Create a button programmatically: 
    var myButton = new Button({ 
     disabled:true, 
     label: "Click me!", 
     onClick: function(){ 
      // Do something: 
      dom.byId("result1").innerHTML += "Thank you! "; 
     } 
    }, "progButtonNode").startup(); 

}); 

require(["dijit/form/Textarea","dijit/registry","dojo/dom" ,"dojo/on","dojo/domReady!"], function(Textarea,registry,dom,on){ 

    var textarea = new Textarea({ 
     name: "myarea", 
     value: "This is the text area...\n\n\n\n\n\n", 
     style: "width:200px;" 
    }, "myarea").startup(); 

    //disalbe the button... 
    //registry.byId("progButtonNode").set("disabled",true); 

    //test 
    dom.byId("result1").innerHTML += "Good!"; 

    //add onchange event... 
    //var button = registry.byId("progButtonNode"); 
    alert('hi'); 


    on(textarea,"change",function(){ 
     alert('3'); 
     registry.byId("progButtonNode").set("disabled",false); 

    }); 
}); 

Yukarıdaki kod benim.Değişiklik nasıl yapılır: textarea tarafından yapılan değişiklikler aşağıdaki gibi yapılır: dojo

Gereksinim, textarea'dan yapıldıktan sonra değişiklikleri algılar ve ardından düğmeyi etkinleştirin. (Düğmesi varsayılan olarak devre dışı oldu)

alıyorum hatası: Yakalanmayan TypeError:

tanımsız teşekkür çok ait 'açık' özelliği okunamıyor!

+0

sana yardım edebilirim Sen dojo/on örneği kullanabilirsiniz. –

+0

@nikkwong Cevap verdiğiniz için teşekkürler, sonunda anladım. :) –

cevap

2

Widget Textarea'daki değişiklikleri algılamak için, başlatırken onChange kullanın.

Kullanım registry.byId() Eğer Button ans seti sahte kullanarak yöntemine .set() mülk disabled olduğunu widged almak için;

Çalışma örneği: https://jsfiddle.net/41epfsdd/

Ben widget'ı Textarea içinde değerini değiştirir her tuş üzerinde ateş buna izin onChangeintermediateChanges: true kullandık unutmayınız. Eğer atlarsanız veya intermediateChanges: false kullanırsanız, onChange olayı yalnızca alan bulanık olduğunda patlar. Zaten oluşturmak Textarea Widget'teki bir olay işleyicisi nasıl uygulanacağı hakkındaki yorumunuzu İlişkin :

require(["dijit/form/Button", "dijit/form/Textarea", "dijit/registry", "dojo/dom", "dojo/on", "dojo/domReady!"], function(Button, Textarea, registry, dom, on) { 

    var myButton = new Button({ 
    disabled: true, 
    label: "Click me!" 
    }, "progButtonNode").startup(); 

    var textarea = new Textarea({ 
    name: "myarea", 
    value: "This is the text area...\n\n\n\n\n\n", 
    intermediateChanges: true, 
    onChange: function() { 
     var progButtonNode = registry.byId('progButtonNode'); 
     progButtonNode.set('disabled', false); 
    } 
    }, "myarea").startup(); 
}); 

Düzen. Yorumunuza dayalı

require(["dojo/on"], function(on){ 
    on(target, "event", function(e){ 
    // handle the event 
    }); 
}); 

Örnek: Bir plnkr oluşturabilir eğer

on(this.lastCommentTextArea, 'change', function(event){ 
    // handle the event 
}) 
+0

Cevabınız için teşekkürler! Bir soru daha, eğer textarea parçacığını zaten oluştursaydım, bunu nasıl yapabilirim? 'dojo.connect (this.lastCommentTextArea, 'Onchange', işlev() { digit.byId (" addCommentButton ") setAttribute ('disabled', false); }); ' ' 'Bu işe yarayacak, ancak bağlantı amortismana uğruyor, bu yüzden mükemmel değil ... –

+1

' dojo.on'unu bunun için 'dojo.connect' kullanımdan kaldırıldı. Bu gibi bir şey yap - dojo.on (this.lastCommentTextArea, 'change', function() {dijit.byId ('addCommentButton'). SetAttribute ('disabled', false);}); – Himanshu

+0

Evet, dojo/on kullanarak veya yourWidget.on() kullanarak düşünün() – GibboK

İlgili konular