2012-12-18 3 views
5

Hallo, ich versuche, Variablen auf dem onclick-Ereignis an eine JavaScript-Funktion übergeben. Ich versuche den folgenden Weg, ich kann nicht den Eingangswert in der Javascript-Funktion erhalten. (Ich erwarte eine Warnung von 1.) Ist es der richtige Weg, dies zu tun? Bitte helfen Sie.Übergabe des Elternformulars onclick Ereignis zu Javascript-Funktion

<head> 
    <script> 
     function submit_value(form) { 
      alert(form.ip.value); 
     } 
    </script> 
</head> 
<table> 
    <tr> 
     <form> 
      <td> 
       <input id="ip" type="text" value="1"> 
      </td> 
      <td> 
       <a href="javascript:;" onClick="submit_value(this)">Button</a> 
      </td> 
     </form> 
    </tr> 
</table> 

Antwort

3

Ihr Skript nicht weiß, was form ist. Sie müssen stattdessen document.forms[0].ip.value angeben.

Wenn das Dokument mehrere Formulare enthält, ist es besser, wenn Sie das Formularelement zuerst in der Variablen speichern. Sie können für die eine ID auf dem Formular haben ...

<form id="formID">

und in submit_value Funktion können Sie haben

var myForm = document.getElementById('formID'); alert(myForm.ip.value);

Edit:

können Sie this.form verwenden für onClick des Anchor-Tags.

+1

Besser ist es, geben Sie Ihrem Formular einen Namen hinzufügen und dann Verwenden Sie document.formName.ip.value – Ankit

+0

Punkt ist dort könnte n sein Anzahl der dynamischen Formen wie folgt. document.forms [0] .ip.value wäre wie das Wissen, welches Formular ich senden möchte. Ich möchte das Formular-Elternelement an das Anker-Tag übergeben. Wie mache ich es? – user1051505

0

Ändern Sie die Funktion dazu:

function submit_value(form) { 
     alert(document.getElementById('ip').value); 
    } 

Wenn Sie submit_value(this) schreiben, wird der Wert von this ist eigentlich das Element <a> selbst, nicht die Form.

+0

Punkt ist dort könnte n Anzahl von dynamischen Formen wie folgt sein. Ich möchte das Formular-Elternelement an das Anker-Tag übergeben. Wie mache ich es? – user1051505

+1

Wenn es viele dynamische Formen gibt, dann sollten Sie nicht 'id = "ip" 'verwenden, da ids eindeutig sein müssen –

+0

ok, Klasse sollte es tun – user1051505

0

Ich nehme an, Sie können jquery verwenden. Selektoren sind damit sehr einfach.

Ändern Sie die unten stehende Formular aus html

<form> 
     <td> 
      <input id="ip" type="text" value="1"> 
     </td> 
     <td> 
      <a href="javascript:;" onClick="submit_value(this)">Button</a> 
     </td> 
</form> 

zu

<form> 
     <td> 
      <input id="ip" type="text" value="1"> 
     </td> 
     <td> 
      <a href="" class="mySubmitButton">Button</a> 
     </td> 
</form> 

Und dann wird Ihre JS aussehen

$('.mySubmitButton').click(function() { 

    var inputBox = $(this).prev(); 
    alert(inputBox.val()); 
    return false; //This prevents the default function submit . Similar to event.preventDefault 
}); 
0

JQuery ist überall. Sie benötigen JQuery nicht. Warum vergessen Menschen das DOM-Objektmodell? Er machte fast alles in der richtigen Art und Weise:

<head> 
 
     <script> 
 
      function submit_value() { 
 
       alert(document.forms[0].ip.value); 
 
      } 
 
     </script> 
 
    </head> 
 
    <table> 
 
     <tr> 
 
      <form> 
 
       <td> 
 
        <input name="ip" type="text" value="1"> 
 
       </td> 
 
       <td> 
 
        <a href="javascript:;" onClick="submit_value()">Button</a> 
 
       </td> 
 
      </form> 
 
     </tr> 
 
    </table>

Oder können Sie Formular-ID

<head> 
 
     <script> 
 
      function submit_value() { 
 
       alert(document.forms.formid.ip.value); 
 
      } 
 
     </script> 
 
    </head> 
 
    <table> 
 
     <tr> 
 
      <form id='formid'> 
 
       <td> 
 
        <input name="ip" type="text" value="1"> 
 
       </td> 
 
       <td> 
 
        <a href="javascript:;" onClick="submit_value()">Button</a> 
 
       </td> 
 
      </form> 
 
     </tr> 
 
    </table>