Etikedaj Arkivoj: JQuery

XSLT kaj jQuery Ekzemploj

Mi estis faranta multa de XSLT kaj jQuery kaj pensis min dividus kelkajn eretojn ke aliaj povas trovi utilan en estonteco.

Ekzemplo 1: Emanigi simplan JavaScript / JQuery en XSLT:

<Xsl:Ŝablona matĉo="aĵo" Xml:Spaciala="konservaĵo">

  <!– Malplenaĵo ekstere la demando amikaj filtriloj kaŝita kampon –>
  <Skriba tipo="teksto/javascript">
    $(Dokumento).Preta(Funkcio(){
      $("#QueryFriendlyFilters").Val("Senhoma");
    });
  </Skribo>

</Xsl:Ŝablono>

Kiu mordis emanigas kelkaj JavaScript kiu atendas por la paĝo fini ŝarĝadon (Pro la $(Dokumento).Preta(…)) Kaj tiam fiksas la valoron de kaŝa kampo nomis QueryFriendlyFilters al la laŭvorta valoro “senhoma”.

Ekzemplo 2: Uzo <Xsl:Se> Kontroli “pli grandan ol”,  “Malpli ol”, Ktp.

<Xsl:Ŝablona matĉo="aĵo" Xml:Spaciala="konservaĵo">

  <Div identigaĵo="fdcAllFilters">
 
    <Xsl:Se testa="@Kalkulo>0">
      <Daŭri dum klason="fdcFilterLabel">Nunaj filtriloj:</Daŭri dum>
    </Xsl:Se>

    <!– Pli da aĵo okazas ĉi tie. –>

</Xsl:Ŝablono>

La supraj eretaj kontroloj vidi se eco nomis “Kalkulon” de la “aĵa” elemento estas pli granda ol nulo.  La XML malantaŭ tio ĉi estus io ŝatas:”

<Io Kalkulas=”5” />

Ekzemplo 3: Iterate tra ĉiuj elementoj, Intermetanta jQuery vokoj.

<!– Iterate tra ĉiuj la filtriloj kaj montri la ĝustan  Ligoj. –>
<Xsl:Pro tio ke-ĉiu elektita="UserFilter">

  <Klaso="FilterHref" Href="javascript:MySubmitPage(‘RemoveUserFilter','{@#IDENTIGA?O}')">[X]</al>

  <Daŭri dum klason="fdcFilterLabel"><Xsl:Valoro-de elektita="@FilterValue"/></Daŭri dum>

  <Skriba tipo="teksto/javascript">

    $(Dokumento).Preta(Funkcio(){
        <Xsl:Teksto><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></Xsl:Teksto>\"<Xsl:Valoro-de elektita="@FilterValue"/>\"<Xsl:Teksto><![CDATA["));]]></Xsl:Teksto>
    });

  </Skribo>

</Xsl:Pro tio ke-ĉiu>

La supra ereto estas la plej kompleksa kaj tie povas esti pli facilaj vojoj fari ĝin.

La XML malantaŭ ĉi tiuj rigardoj malglate tiel:

<UserFilter IDENTIGAĴO=”123” FilterValue=”xyzzy” />

Ĉi tiu ereto estas iterating tra <UserFilter> Nodoj. 

Ĝi unue emanigas ankran etikedon ke kiam klakita alvokas JavaScript funkcio kiu estas jam sur la paĝo, “MySubmitPage” kaj pasas la valoron de eco sur la <UserFilter> Nodo nomis “IDENTIGAĴON”. 

Ĝi tiam emanigas kelkaj jQuery kiu atendas por la paĝo ŝarĝi.  KE jQuery ĝisdatigas kaŝan kampon nomis “QueryFriendlyFilters” de aldonanta la valoron de la FilterValue eco.  Noti ĉiuj la freneza <Xsl:Teksto> Kaj <![CDATA[ … ]]> Aĵo.

Tio estas ĝi, Esperi ĝin helpoj!

</Fino>

Aboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

Listoj.Asmx, GetListItems kaj Tekoj

Mi estis faranta iun esploron por iu hodiaŭ ĉirkaŭ la listo.Asmx araneaĵa servo provizita kiel parto de SharePoint 2010 (Kaj antaŭe).  Ŝi estis kapabla akiri la listajn erojn ĉe la radika teko (Inkluzivanta la nomojn de sub-tekoj), Sed ne povus akiri erojn en sub-tekoj.  Mi faris kelkajn rigardantan proksimume sur la interretoj kaj ĝi estas surprize ofta demando.  Ankoraŭ, Mi ne povus akiri bonan respondon al la simpla demando, “Se mi scias la tekon, Kiel mi akiras la eroj en la teko?”  Esti honesta, Mi ne provis ĉiuj tiu malfacila pro tio ke mi deziris kalkuli ĉi tiu unu ekstere sur mia propra por momento rideto.

Instali tion ĉi, Mi kreis ejon nomis “Blogging Scenaroj” kaj laŭmenda listo nomis “Laŭmendan Liston kun Sub Tekoj”.  Mi tiam kreis tekojn nomis:

  • Jaro 2005
  • Jaro 2006
  • Jaro 2007

Mi aldonis kelkajn erojn al la teka “Jaro 2006”.  Tio ĉi estas kio ĝi similas:

image

Mia amiko ne estas skribanta C# kodon sed prefere uzanta Java, Do la SAPA koverto estis kio ŝi vere devis.  Akiri tion, Mi skribis iom de jQuery kaj tiam uzita fiddler akiri la realan HTTPan konversacion.

Ĉi tie-a la rilata jQuery (Mi kopiis la kodon sube se vi deziras kopii/almeti):

image

Ili unue kerna estas inkluzivi ambaŭ <QueryOptions> Kaj <QueryOptions> Nodo.  La dua ŝlosilo estas ke la <Teko> Nodo estas URL al kiu la kliento havas aliron.

Tie povas esti aliaj vojoj akiri tion ĉi, Sed tio ĉi laboris bone por mi kiam uzanta jQuery.

Ĉi tie estas la SAPA koverto por la supra:

<Soapenv:Koverto xmlns:Soapenv=’Http://Schemas.Xmlsoap.Org/sapa/koverto/’>                
  <Soapenv:Korpo>
    <GetListItems xmlns=’
Http://Schemas.Microsoft.Com/sharepoint/sapo/’>
      <ListName>Laŭmenda Listo kun Sub Tekoj</ListName>
      <ViewFields>  
        <ViewFields>
          <FieldRef Nomo='Titolo’ />
          <FieldRef Nomo='EncodedAbsUrl’ />
        </ViewFields>
      </ViewFields>
      <QueryOptions>
        <QueryOptions>
          <Teko>
Http://Demoserver1/Blogging Scenaroj/enlistigas/Laŭmendan Liston kun Sub Teka/Jaro 2006</Teko>
        </QueryOptions>
      </QueryOptions>
   
</GetListItems>
  </Soapenv:Korpo>
</Soapenv:Koverto>

Multaj ekzemploj kaj diskuto ĉirkaŭ tio ĉi gvidis min kredi ke ĉiuj mi devas estis <QueryOptions> Kaj specifi tekan nomon.  Por mi, Mi devas al ambaŭ mantelo ĝi interne <QueryOptions> Tiel kiel specifas plene kvalifikita URL por la <Teko> Nodo.

Ĉi tie-a la jQuery AJAXa aranĝo:

$(Dokumento).Preta(Funkcio() {
       Var soapEnv =
           "<Soapenv:Koverto xmlns:Soapenv=’Http://Schemas.Xmlsoap.Org/sapa/koverto/’> \
               <Soapenv:Korpo> \
                    <GetListItems xmlns=’Http://Schemas.Microsoft.Com/sharepoint/sapo/’> \
                       <ListName>Laŭmenda Listo kun Sub Tekoj</ListName> \
                       <ViewFields> \
                           <ViewFields> \
                              <FieldRef Nomo='Titolo’ /> \
                              <FieldRef Nomo='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </ViewFields> \
                       <QueryOptions> \
                         <QueryOptions> \
                           <Teko>http://demoserver1/Blogging Scenaroj/enlistigas/Laŭmendan Liston kun Sub Teka/Jaro 2006</Teko> \
                         </QueryOptions> \
                       </QueryOptions> \
                   </GetListItems> \
               </Soapenv:Korpo> \
           </Soapenv:Koverto>";

</Fino>

Aboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

Endlessly Nestado <Div> Etikedoj kaj jQuery

Tio ĉi ŝajnas kiel tia bizarula temo, Mi ne estas certe ĝi estas vere valora blogging pri, Sed tio estas neniam haltita min antaŭe, Tiel ĉi tie ni iras rideto

Mi estas eliranta sur projekto kie mi estas tiranta kelkajn datumojn de serĉo, Prezentanta ĝin supre en XMLa mesaĝo kaj tiam ke XML estas fine transformita en HTML tra XSLT.  Tie estas multa jQuery okupita, Unu mordis de kiu efektivigas kelkaj tabbing funkcio.  Kiam vi klakas sur klapeto (Vere, al <Div>), JQuery alvokas .Felo() Kaj .Rezulto() Sur diversaj divs (La komenca paĝa ŝarĝo elŝutas ĉiuj la enhavo sekve estas ne postbacks en ĉi tiu kazo).

Aro de horoj antaŭe, La klapeto ŝaltanta logikon komencita konduti nekonstante kaj ĝi ne montrus unu el miaj klapetoj.  Mi fine spuris ĝin malsupren al la fakto ke interreta esploristo (Almenaŭ) Pensis ke la <Div> Etikedoj nestis ege, Ege pli profunda ol celita.La ellaboranto toolbar montrus:

-<Div identigaĵo=”Tab1Content”>
  -<Div>
    -<Div>
      -<Div identigaĵo=”Tab2Content”>
        -<Div>
           …………………………
                   </Div>  <—Fine montranta ĝin estis fermita tute malsupren ĉi tie!

Tiel, Se mi faris $(“#Tab1Content”).Felo(), Mi ankaŭ kaŝus Tab2 kaj min neniam povus montri Tab2 se mi ne ankaŭ montris Tab1.  Mi kopiis kaj almetis la kodon supre en vida studio kaj ĝi montris ĉiujn de la div-a viciganta agrable, Nur ŝatas ilin estis supozita esti faranta, Similanta tion ĉi:

-<Div identigaĵo=”Tab1Content”>
  +<Div>
  +<Div>
-<Div identigaĵo=”Tab2Content”>
  +<Div>
  +<Div>

Mi venkas mian kapon kontraŭ la muro por momento kaj rimarkita ke en la reala HTMLa kodo estis produktanta multan senhoman <Div> Etikedoj, Ŝatas:

<Korpo>

  <Div identigaĵo=”Tab1Content”>

    <Div identigaĵo=”row1” />
    <Div identigaĵo=”row2” />

  </Div>

  <Div identigaĵo=”Tab2Content”>

    <Div identigaĵo=”row1” />
    <Div identigaĵo=”row2” />

  </Div>

</Korpo>

(La sur estas waaaaaaaaaaaay oversimplified.  La senhoma div etikedoj estas tute validaj. Kelkaj de mia <Div> Etikedoj estis plene de enhavo, Sed multa plio ne estis.  Mi venis al la konscio ke mia <Xsl:Pro tio ke-ĉiu> Instrukcioj estis emanigantaj la mallongan-formo div etikedas kiam la xsl:Pro tio ke-ĉiu faris ne' trovas ajnan datumon.  Mi devigis HTMLan rimarkon en la produktado, Kiel montrita:

image

 

Post kiam mi faris tion, Ĉiuj la div-a vicigis agrable kaj mia klapeto ŝaltanta komencita laboranta.

Kiel ĉiam, Mi esperas tion ĉi helpas iun en pinĉo.

</Fino>

Aboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

Sed tamen Pli da jQuery–Resize Bilda Ekzemplo

Mi heredis araneaĵan parton de malnova vendisto de kliento kaj ĝi havas bildan grandecan problemon.  La bildoj devus esti 60×50 Sed por iu stranga kialo, La originala vendisto devigis ilin en 42×42, Do ili rigardas squashed:

 

Bona Bildo

Malbona Bildo

Ĉi tie-a la markup (Iom simpligita):

<Tabla klaso='plilongigita-perspektivo'>
  <Thead>
    <Tr>
      <Th  Larĝo='100′>3 Mardo</Th>
    </Tr>
  </Thead>

  <Tbody>
    <Tr klasa='prognozo'>
      <Td larĝo='100′>
        <Ul>
          <Li klaso='alta'>Alta: 72&Deg;F</Li>
          <Li klaso='malalta'>Malalte: 44&Deg;F</Li>
          <Li klasa='kondiĉo'>Sunbrila
            <Img src=’
Http://Deskwx.Weatherbug.Com/bilda/Prognozo/ikonoj/malcentralizis/60×50/En/trans/cond007.Png’ Larĝo='42’ Alto='42’ Alt=” />
          </Li>
        </Ul>
      </Td>
    </Tr>

  </Tbody>

</Tablo>

Vi notos ke eĉ kvankam la Vojo al la bildo ĝi mem Montras la konvenan dimension (60×50) La originala vendisto devigis ĝin en 42×42.  Kial?  Freneza.

Ĉiuokaze, Mi deziris rapidan kaj facilan solvon al ĉi tiu afero kaj mi turnis al jQuery.  La ruzo estis troviĝi ĉiujn de la konvena <Img> Etikedoj.  Mi ne deziris al feĉo pri kun ajna alia img etikedoj (De kiu estas multaj).  Tio ĉi mordis de jQuery faris la ruzon:

<Skriba tipo="teksto/javascript" Src="Http://Ajax.Googleapis.Com/ajax/libs/jquery/1.5/jquery.Min.Js"></Skribo>

<Skriba tipo="teksto/javascript">
     $(Dokumento).Preta(Funkcio () {

         $(‘Li.Kondiĉo > Img').Ĉiu(Funkcio (Indekso, Ero)
           
{
             $(Ero).Css("Larĝo", "60"); 
             $(Ero).Css("Alto", "50");
            });
     }); // Sur dokumenta ŝarĝo
</Skribo>

Kiu mordis de kodo trovas la kolekton <Li> Etikedas kies klaso estas “kondiĉo” kaj <Img> Infanoj.  Ĝi tiam iterates tra ĉiuj de tio.  Laborita kiel ĉarmo.

Mi verŝajne povus fluliniigi ĝin, Sed mi neniam estis la speco de unix ulo kiu solvis π Al 18 Cifera precizeco uzanta sed kaj awk kaj mi ne estas tiu afabla se jQuery ulo aŭ rideto.

</Fino>

Aboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

Ekregi vian OK kaj Nuligi Butonojn

Mi skribis Ĉi tiu artikolo Momenta malantaŭo, Sed similas min ne ligis al ĝi de mia blogo ĉe la tempo, Tiel ĉi tie iras:

image

Ĉi tiu artikolo priskribas kiel devigi newform.Aspx redirekti al unu paĝo kiam la uzanto klakas BONE kaj malsama paĝo kiam ŝi klakas nuligas.

</Fino>

Aboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

Rapida Konsileto: Aldonanta jQuery al MUSKO Eldonanta Paĝojn

Kiam pliboniganta MUSKO publising paĝoj uzanta jQuery, Mi frapis la sekvantan rapidan ŝvelaĵon:

Servila Eraro en ‘/’ Apliko.


Parser Eraro

Priskribo: Eraro okazita dum la analizanta de rimedo postulita priservi ĉi tiun peton. Bonvolu revizii la sekvantan specifa analizi erarajn detalojn kaj modifi vian fontan dosieron appropriately.

Parser Erara Mesaĝo: Nur Kontentaj kontroloj estas permesita rekte en kontenta paĝo kiu enhavas Kontentajn kontrolojn.

Fonta Eraro:

 
Line 10: 
Line 11: 
Line 12: <script 
Line 13:     type="text/javascript" 
Line 14:     src="/jQuery/jquery-1.4.min.js"> 

Fonta Dosiero: /_Katalogas/masterpage/KCC_FacultyMember.Aspx    Linio: 12


Versia Informo: Microsoft .PURA Kadra Versio:2.0.50727.4927; ASPIDO.PURA Versio:2.0.50727.4927

Ĝi estis facile sufiĉa ripari (H/t al mia kolego, Uday Ethirajulu).  Esti certe ke la jQuery kodaj vivoj en la “PlaceHolderAdditionalPageHead” kiel montrita:

<Aspido:Enhavo ContentPlaceholderID="PlaceHolderAdditionalPageHead" Runat="servilo">

<Skribo

    Tipa="teksto/javascript"

    Src="/jQuery/jquery-1.4.Min.Js">

</Skribo>

<Skriba tipo="teksto/javascript">

  $(Dokumento).Preta(Funkcio() {

   // Brilega jQuery aĵo iras ĉi tie.

   });

</Skribo>

</Fino>

Aboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin