2012-04-04 2 views
3

Ich habe ein JSP, wo einige Optionsfelder und Textfelder von Dropdown-Auswahl abhängen.
Hier ist mein JSP und JavaScript-Code.
Optionsfeld zuerst deaktiviert, nachdem Senden erneut aktiviert

jsp

  <s:form action="crInquiry" name="form">  
      <s:select name="filterValue" list="headerList" 
    onchange="OnChange(this.form.filterValue);" /> 
      <s:radio name="filter" list="#{'STATUS_FILTER_START':'START','STATUS_FILTER_END':'STOP'}" 
label="Stage"></s:radio> 
      <s:textfield disabled="true" value="0" name="count" theme="css_xhtml"></s:textfield> 
      <s:radio name="ascOrder" list="#{'ASC':'ASC','DESC':'DESC'}"></s:radio> 
      <s:submit value="Filter" onclick="gotopage('FilteredInquiryLog')"></s:submit> 
      <s:submitvalue="Details" onclick="gotopage('crInquiry')"></s:submit> 
      </s:form> 

Javascript

<script type="text/javascript"> 
    function OnChange(dropdown) { 
     var myindex = dropdown.selectedIndex; 
     document.form.filter[0].disabled = false; 
     document.form.filter[1].disabled = false; 
    if (myindex == 8) { 
      alert("8"); 
      document.form.filter[0].disabled = true; 
      document.form.filter[1].disabled = true; 
      document.form.count.disabled = false; 
      document.form.submit.disabled = false; 
     } 
     else if (myindex == 9) { 
      alert("9"); 
      document.form.filter[0].disabled = true; 
      document.form.filter[1].disabled = true; 
      document.form.count.disabled = true; 
      document.form.submit.disabled = false; 
     } 

     else{ 
      document.form.filter[0].disabled = false; 
      document.form.filter[1].disabled = false; 
      document.form.count.disabled = true; 
      document.form.submit.disabled = false; 
      } 
     } 


    function gotopage(actionname) 
    { 
      document.form.action=actionname+".action"; 
      document.form.submit(); 
    } 
</script> 

Das Problem ist, wenn ich ein Element auf Dropdown sagen Element nicht auswählen. 8 oder 9 so durch Javascript Radio-Buttons sollten für beide deaktiviert sein und Textfeld und Radio-Taste für 9. Wenn ich ein Element wählen deaktiviert es Radion-Taste oder Textfeld perfekt, aber wenn ich abschicke, zeigt es mir die Radio-Taste aktiviert, weil ich komme zum selben jsp. Was ist das Problem in meinem Javascript?

+0

können Sie beschreiben, was Sie mit dem * Optionsfeld aktiviert bedeuten, weil ich auf den gleichen jsp * kommen? –

+0

@UmeshAwasthi Ich habe das gelöst, ich glaube, Problem war, dass ich Drop-Down als Parameter an die OnChange-Funktion gesendet habe. Aber wenn man es onload des Körpers nennt, könnte es mir nicht den Wert des Elements der Form geben. Avi Ys Antwort ist vollkommen richtig –

Antwort

2

Sie sollten Ihren Dropdown-Wert auch auf Seite Onload-Ereignis überprüfen.

So etwas

<script type="text/javascript"> 

/** 
* This function will be called twice - once on onChage event, and once on onLoad event 
*/ 
    function OnChange() { 
    dropdown = document.getElementById('myDropDown'); 
     var myindex = dropdown.selectedIndex; 
     document.form.filter[0].disabled = false; 
     document.form.filter[1].disabled = false; 
    if (myindex == 8) { 
      document.form.filter[0].disabled = true; 
      document.form.filter[1].disabled = true; 
      document.form.count.disabled = false; 
      document.form.submit.disabled = false; 
     } 
     else if (myindex == 9) { 
      document.form.filter[0].disabled = true; 
      document.form.filter[1].disabled = true; 
      document.form.count.disabled = true; 
      document.form.submit.disabled = false; 
     } 

     else{ 
      document.form.filter[0].disabled = false; 
      document.form.filter[1].disabled = false; 
      document.form.count.disabled = true; 
      document.form.submit.disabled = false; 
      } 
     } 


    function gotopage(actionname) 
    { 
      document.form.action=actionname+".action"; 
      document.form.submit(); 
    } 
</script> 

<body onload="OnChange()"> 
<s:form action="crInquiry" name="form">  
      <s:select name="filterValue" list="headerList" id="myDropDown" 
    onchange="OnChange();" /> 
      <s:radio name="filter" list="#{'STATUS_FILTER_START':'START','STATUS_FILTER_END':'STOP'}" 
label="Stage"></s:radio> 
      <s:textfield disabled="true" value="0" name="count" theme="css_xhtml"></s:textfield> 
      <s:radio name="ascOrder" list="#{'ASC':'ASC','DESC':'DESC'}"></s:radio> 
      <s:submit value="Filter" onclick="gotopage('FilteredInquiryLog')"></s:submit> 
      <s:submitvalue="Details" onclick="gotopage('crInquiry')"></s:submit> 
      </s:form> 
1

Wenn ich Ihr Problem richtig verstanden habe, denke ich, dass es kein Problem mit Ihrem Javascript gibt.
Da zwischen den Seitendaten vor dem Senden und nach dem Senden keine Kommunikation stattfindet, wird ein Problem verursacht.

Sie können dieses Problem auf eine der folgenden Arten überwinden. 1. Rufen Sie Ihr Javascript auf "OnLoad" -Ereignis des Körpers und es wird Ihnen gleich funktionieren.
2. Speichern Sie den aktuellen Status der Seite in einer Kontrolle (sagen Sie Textfelder) und reichen Sie sie mit anderen Daten der Seite ein. Zum Zeitpunkt des Ladens (möglicherweise onLoad oder am Ende Ihrer JSP-Seite) können Sie den Status mithilfe des Werts in diesem Feld wiederherstellen.

Ich hoffe, das würde für Sie arbeiten.

+0

Ich habe versucht, es onload des Körpers zu nennen, aber ich weiß nicht, warum es zu dieser Zeit nicht genannt wird. Ich habe eine Warnung auf Onchange-Funktion geschrieben, wenn (8 oder 9 Bedingung), wird es zum Zeitpunkt der Auswahl Dropdown angezeigt, aber nicht onload of body angezeigt –