tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Quaese
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
2201
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Aug 2007
    Beiträge
    181
    Hi

    Ich habe ein Problem mit meiner Suchfunktion.
    Mit Hilfe von Javascript und den Formulardaten wird die action des Formulars angepasst, danach sollte es abschickt werden.

    Doch nun gibt mir die Fehlerkonsole immer folgenden Fehler aus:
    Code :
    1
    2
    3
    
    Fehler: domForm.submit is not a function
    Quelldatei: http://localhost:8180/author/docroot/aseintra/js/search.js
    Zeile: 28

    Ich habe bereits mehrere Stunden gesucht, aber auf vielen Seiten werden nur Probleme wegen eines Elements mit dem Namen "submit" geschildert...
    Bei mir hat kein Element diesen Namen.

    Hier das Formular:

    HTML-Code:
    <jsp:root version="1.2"	xmlns:jsp="http://java.sun.com/JSP/Page"
    	xmlns:fn="urn:jsptld:http://java.sun.com/jsp/jstl/functions">
    
    	<div id="searchBoxMain">
    		<form method="post" id="searchForm" name="searchForm" action="javascript:submitSearchForm(document.getElementById('searchForm'), 'radio');">
              <table cellspacing="0" cellpadding="0">
              <tr>
                <td>
                  <label for="query">Such<u>e</u>n: </label>
                </td>
                <td>
        				<input size="27" id="query" name="query" value="${fn:escapeXml(param.query)}" accesskey="e" />			
                </td>
              </tr>
              <tr>
                <td>
                </td>
                <td colspan="2">
                <input type="radio" name="repository" id="repository" value="site" />Intranet
        				<input type="radio" name="repository" id="repository" value="phonebook" checked="checked"/>Telefon
        				</td>
              <td>
                <input type="submit" name="search" value="Los" />
              </td>
              </tr>
              </table>
    		</form>
    	</div>
    </jsp:root>
    und hier das Javascript:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    
    /**
    * Verarbeitungsfunktion fuer Suchformular.
    */
    /**
    * Passt den Action-Path des Suchformulars an.
    * @param form Formular Objekt (DOM-Element)
    * @return void
    */
    function submitSearchForm(domForm, type) {
      var domSelectRepository = document.getElementById('repository');
        var repository = domSelectRepository.value;
        var domInputQuery = document.getElementById('query');
        var query = domInputQuery.value;
        var checked = domInputQuery.checked;
        if(type == 'radio')
        {
        var chosen = GetSelectedItem();
      }else{
        var chosen = repository;
      }
        switch(chosen) {
            case 'phonebook':
                window.open('http://localhost:8180/apps/telefonverz/small_telefonverz.php?telid=' + query, '_self');
                break;
            case 'site':
                domForm.action = '/' + getContextPath() + 'Intranet/search.html?search=search';
                domForm.submit();
                break;
            case 'problem':
                domForm.action = '/' + getContextPath() + 'Intranet/problemSearch.html?search=search';
                domForm.submit();
                break;
        }
    }
     
    /**
    * Gibt den per radio Button ausgewählten Wert zurück.
    * @return chosen
    */
    function GetSelectedItem() {
     
    chosen = ""
    len = document.searchForm.repository.length
     
      for (i = 0; i <len; i++) {
        if (document.searchForm.repository[i].checked) {
        chosen = document.searchForm.repository[i].value
        }
      }  
      return chosen;
    }
    /**
    * Gibt den Servlet-Context-Path zurueck.
    * @return Servlet-Context-Path
    */
    function getContextPath() {
        var contextPath = location.href;
        contextPath = contextPath.substr(7);
        contextPath = contextPath.substr(contextPath.indexOf('/')+1);
        contextPath = contextPath.substr(0, contextPath.indexOf('/')+1);
        return contextPath;
    }

    Vielen Dank im voraus!
     

  2. #2
    Avatar von Manuel Hegemann
    Manuel Hegemann Manuel Hegemann ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Ort
    Groß-Rohrheim (Hessen)
    Beiträge
    145
    Hi,

    ich bin mir nicht 100%ig sicher, aber es könnte daran liegen, dass du das JavaScript im Action-Attribut aufrufst.

    Versuch mal dein Formtag wie folgt aufzubauen:

    HTML-Code:
    <form method="post" id="searchForm" name="searchForm" action="">
    und dann deinen Submit-Button so:
    HTML-Code:
    <input type="button" name="search" value="Los" onClick="javascript:submitSearchForm(document.getElementById('searchForm'), 'radio');" />
    Ich denke, so sollte es dann gehen!

    Viele Grüße,
    BigManu
     
    Gruß,
    Manuel

    Programmers are busy writing the next best idiot proof software. The universe in the meantime is making the next best idiot. The universe is winning...
    - - -
    There are 10 kinds of people. Those who understand binary and those who not.

  3. #3
    Registriert seit
    Aug 2007
    Beiträge
    181
    Vielen Dank für die schnelle Antwort!

    Leider brachte die Änderung nicht den gewünschten Effekt, es wird der selbe Fehler ausgegeben.
    Ausserdem habe ich auch schon forms mit dem js im action gemacht, die haben immer Funktioniert.

    Das Javascript wird ja auch aufgerufen, also sollte dies kein Problem sein.
     

  4. #4
    Avatar von Manuel Hegemann
    Manuel Hegemann Manuel Hegemann ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Ort
    Groß-Rohrheim (Hessen)
    Beiträge
    145
    Hm..., ok...
    Ich hatte schon mal ein ähnliches Problem, komme nur gerade nicht mehr drauf, wie ich das damals lösen konnte, bzw. woran es lag.
    Versuche mal in der form an Stelle von document.getElementById('searchForm') einfach this zu übergeben.
     
    Gruß,
    Manuel

    Programmers are busy writing the next best idiot proof software. The universe in the meantime is making the next best idiot. The universe is winning...
    - - -
    There are 10 kinds of people. Those who understand binary and those who not.

  5. #5
    Registriert seit
    Aug 2007
    Beiträge
    181
    mhhh nutzt leider auch nix
    Interessant ist ja, dass ich auf die Elemente zugreifen kann, ich kann ja action mit domForm.action = ... ändern.
    Nur wieso das submit nicht geht ist mir ein Rätsel
     

  6. #6
    Avatar von Manuel Hegemann
    Manuel Hegemann Manuel Hegemann ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Ort
    Groß-Rohrheim (Hessen)
    Beiträge
    145
    Ist es evtl. möglich, dass der JSP-Compiler da ein Hiddenfeld namens submit automatisch erzeugt? Ich hatte damals das Problem zwar nicht mit JSP, aber ich arbeite mich seit kurzem in JSF ein und da gab es ähnliche Phänomene...
     
    Gruß,
    Manuel

    Programmers are busy writing the next best idiot proof software. The universe in the meantime is making the next best idiot. The universe is winning...
    - - -
    There are 10 kinds of people. Those who understand binary and those who not.

  7. #7
    Registriert seit
    Aug 2007
    Beiträge
    181
    Hmm also im fertig generierten quellcode ist davon nichts zu sehen.
     

  8. #8
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    dann zeig doch mal den fertig generierten Quellcode. Vielleicht ist dort mehr zu erkennen. Denn mit den von dir geposteten Codefragmenten funktioniert es bei mir problemlos.

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  9. #9
    Registriert seit
    Aug 2007
    Beiträge
    181
    Ich kann nichts ungewöhnliches erkennen aber hier:
    HTML-Code:
    <form action="javascript:submitSearchForm(document.getElementById('searchForm'), 'radio');" name="searchForm" id="searchForm" method="post">
                  <table cellpadding="0" cellspacing="0">
                    <tr>
                      <td>
                        <label for="query">
                          Such
                          <u>e</u>
                          n: 
                        </label></td>
                      <td>
                        <input accesskey="e" value="" name="query" id="query" size="27"/></td>
                      <td>
                        <input value="Los" name="search" type="submit"/></td>
                    </tr>
                    <tr>
                      <td/>
                      <td colspan="2">
                        <input value="site" id="repository" name="repository" type="radio"/> Intranet
                        <input checked="checked" value="phonebook" id="repository" name="repository" type="radio"/> Telefon</td>
                    </tr>
                  </table>
                </form>
     

  10. #10
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    an dem Teil scheint es nicht zu liegen. Du hast dort zwar die ID repository zweimal verwendet - IDs müssen jedoch eindeutig sein. Aber da du den Zweig mit den Radiobuttons benutzt, sollte es dennoch funktionieren.

    Das Problem muss also irgendwo anders im Quellcode verborgen liegen. Es wäre also sinnvoll mehr Informationen zu zeigen, am besten den kompletten fertig generierten Quellcode.

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  11. #11
    Registriert seit
    Aug 2007
    Beiträge
    181
    Oke hier der komplette:

    HTML-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 		"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      <head>
        <title>
        Intranet
        </title>
        <meta content="" name="description"/>
        <meta content="" name="keywords"/>
        <meta content="no" http-equiv="imagetoolbar"/>
        <link href="/author/docroot/aseintra/css/blue.css" type="text/css" rel="stylesheet"/>
        <link media="print" href="/author/docroot/aseintra/css/bluePrint.css" type="text/css" rel="stylesheet"/>
    <script src="/author/docroot/aseintra/js/pdfwindow.js" type="text/javascript"></script>
    <script src="/author/docroot/aseintra/js/form.js" type="text/javascript"></script>
    <script src="/author/docroot/aseintra/js/search.js" type="text/javascript"></script>
    <script src="/author/docroot/aseintra/js/openexcel.js" type="text/javascript"></script>
    <script src="/author/docroot/aseintra/js/switcher.js" type="text/javascript"></script>
        <link rel="stylesheet" type="text/css" href="/author/.resources/admin-css/admin-all.css" />
    <script type="text/javascript" src="/author/.magnolia/pages/javascript.js"></script>
    <script type="text/javascript" src="/author/.resources/admin-js/dialogs/dialogs.js"></script>
        <link rel="stylesheet" type="text/css" media="all" href="/author/.resources/calendar/skins/aqua/theme.css" title="Aqua" />
    <script type="text/javascript" src="/author/.resources/calendar/calendar.js"></script>
    <script type="text/javascript" src="/author/.resources/calendar/lang/calendar-en.js"></script>
    <script type="text/javascript" src="/author/.resources/calendar/calendar-setup.js"></script>
      </head>
      <body>
        <div class="mgnlMainbarPreview" style="top:4px;left:4px;">
          <span onmousedown="mgnlShiftPushButtonDown(this);" onmouseout="mgnlShiftPushButtonOut(this);" onclick="mgnlShiftPushButtonClick(this);mgnlPreview(false);" class="mgnlControlButton">
            &raquo;
          </span>
        </div>
        <div id="header">
          <table border="0" style="width:100%;" cellspacing="0" cellpadding="0">
            <tr>
              <td>
                <div id="pageTitle">
                  Intranet
                </div></td>
              <td>
                <a href="/author">
                  <img border="0" id="logo" title="" alt="Home" src="/author/docroot/aseintra/imgs/logo2_180_off.gif"/></a></td>
            </tr>
            <tr>
              <td colspan="3" style="border-right:none;" class="breadcrust">
                <a href="/author/Intranet.html" class="active">Intranet</a></td>
            </tr>
          </table>
        </div>
        <div id="contentMain">
          <div id="leftGroup">
            <div id="columnImage">            
              <div style="clear:both;text-align:left;" class="spacer0">  
                <p>
                  <a href="/author/Intranet.html">
                    <img class="" style="width: 600px; height: 201px" height="250" alt="" hspace="0" width="600" align="top" border="0" src="/author/Intranet/topLeft1/0/content_files/file/mainpicture.jpg" /></a>
                </p>
              </div>
              <![CDATA[&nbsp;]]>
            </div>
            <div id="columnLeft1">
              <ul class="level1 main">
                <li class="closed">
                  <a href="/author/Intranet/Markt.html">Markt </a></li>
                <li class="closed">
                  <a href="/author/Intranet/Unsere-Firma.html">Unsere Firma </a></li>
                <li class="leaf">
                  <a href="/author/Intranet/Geschaeftsprozesse.html">Gesch&auml;ftsprozesse </a></li>
                <li class="closed">
                  <a href="/author/Intranet/Dienste.html">Dienste </a></li>
                <li class="closed">
                  <a href="/author/Intranet/Bereiche.html">Bereiche </a></li>
                <li class="closed">
                  <a href="/author/Intranet/Anwendungen.html">Anwendungen </a></li>
              </ul>
            </div>
            <div id="columnLeft2">            
              <div style="clear:both;" class="spacer0">  
                <h2>Informationen</h2>
                <div style="border-right: #009cff 1px solid; padding-right: 0px; border-top: #009cff 1px solid; padding-left: 0px; background: #e0f5ff; padding-bottom: 0px; border-left: #009cff 1px solid; width: 216px; padding-top: 0px; border-bottom: #009cff 1px solid"><br />
                  <ul>
                    <li>
                    <a href="#">
                      <strong>Infoflash</strong></a></li>
                    <li>
                    <a target="_blank" href="#">
                      <strong>Monatliche News</strong></a>
                    &nbsp;</li>
                  </ul>
                </div>
                  <strong>Intranet Passwort<br /></strong>
              </div>
              <![CDATA[&nbsp;]]>
            </div>
            <div id="columnLeft3">            
              <div style="clear:both;" class="spacer0">  
                <h2>Quicklinks</h2>
                <ul>
                  <li>
                  <a href="#">Intranet Suche</a></li>
                  <li>
                  <a href="#">Aktueller Menuplan</a></li>
                  <li>
                  <a href="#">IT-Workflow</a></li>
                </ul>
              </div>
              <![CDATA[&nbsp;]]>
            </div>
          </div>
          <div id="rightGroup">
            <div style="border-left:none;" id="searchForm">
              <div id="searchBoxMain">
                <form action="javascript:submitSearchForm(document.getElementById('searchForm'), 'radio');" name="searchForm" id="searchForm" method="post">
                  <table cellpadding="0" cellspacing="0">
                    <tr>
                      <td>
                        <label for="query">
                          Such
                          <u>e</u>
                          n: 
                        </label></td>
                      <td>
                        <input accesskey="e" value="" name="query" id="query" size="27"/></td>
                      <td>
                        <input value="Los" name="search" type="submit"/></td>
                    </tr>
                    <tr>
                      <td/>
                      <td colspan="2">
                        <input value="site" id="repository" name="repository" type="radio"/> Intranet
                        <input checked="checked" value="phonebook" id="repository" name="repository" type="radio"/> Telefon</td>
                    </tr>
                  </table>
                </form>
              </div>
            </div>             
            <div style="clear:both;" class="spacer0">
              <a name="columnParagraphs1"></a>  
              <div class="news">
                <div class="newsTitle">
                  Technische Probleme mit dem Intranet
                </div>
                <div class="newsTimestamp">
                  Bern - 24. Juli 2007, 10:06
                </div>
                <div class="newsText">
                </div>
                <div class="newsLink">
                </div>
              </div>
            </div>             
            <div style="clear:both;" class="spacer0">
              <a name="columnParagraphs2"></a>  
              <div class="news">
                <div class="newsTitle">
                  Intranet überarbeitet
                </div>
                <div class="newsTimestamp">
                  Bern - 17. Juli 2007, 9:51
                </div>
                <div class="newsText">
                </div>
                <div class="newsLink">
                </div>
              </div>
            </div>
            <![CDATA[&nbsp;]]>
          </div>
        </div>
        <div id="footer">
          <a class="external" target="asehomepage" href="#"></a>
          | 
          <a href="/author/sitemap">Sitemap</a> |
          <a href="javascript:switchInstance();">Public</a>
        </div>
      </body>
    </html>
     

  12. #12
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    das Problem ist, dass du auch die ID searchForm zweimal vergeben hast:
    Code :
    1
    
    <div style="border-left:none;" id="[B]searchForm[/B]">
    Damit ist die ID nicht mehr eindeutig und der Browser entscheidet sich für das erste Element, dass dadurch identifiziert wird. In deinem Fall also das DIV und nicht das Formular.

    Wenn du die IDs entsprechend anpasst, sollte es funktionieren.

    Ciao
    Quaese
    HuRaHoRRe bedankt sich. 
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  13. #13
    Registriert seit
    Aug 2007
    Beiträge
    181
    OMG vielen Dank es funktioniert

    Diese id habe ich dem DIV vor langer Zeit mal für die Style Definitionen vergeben und total vergessen(ich habe sie schlussendlich nichtmal benutzt).
    Irgendwie sinds immer die dümsten Fehler die am meisten Zeit rauben

    Viele Grüsse

    hurahorre
     

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 14.01.11, 14:08
  2. Form submit über JS funktioniert nicht
    Von Phinix im Forum Javascript & Ajax
    Antworten: 18
    Letzter Beitrag: 20.08.10, 13:53
  3. submit funktioniert nicht
    Von tombo82 im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 25.11.09, 12:53
  4. form check nicht mit submit als link?
    Von webraccoon im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 21.09.04, 17:43
  5. form.submit(); funktioniert nicht...
    Von pxlArtizzt im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 14.09.03, 18:48