2012-12-18 11 views
5

Witam Próbuję przekazać zmienne zdarzenia onclick do funkcji javascript. Próbuję w następujący sposób, nie mogę uzyskać wartości wejściowej w funkcji javascript. (Spodziewam się alert 1.) Czy jest to właściwy sposób na to? Proszę pomóż.przekazywanie formularza nadrzędnego zdarzenia onclick do funkcji javascript

<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> 

Odpowiedz

3

Twój skrypt nie wie, co form jest. Musisz podać zamiast tego document.forms[0].ip.value.

Jeśli istnieje więcej niż jeden formularz na dokumencie, to lepiej będzie, jeśli najpierw przechowujesz element formularza w zmiennej. Można mieć identyfikator w postaci na tym, że ...

<form id="formID">

i funkcji submit_value można mieć

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

Edit:

Można użyć this.form dla onClick of anchor tag.

+1

Lepiej jest dać formularzu nazwę, a następnie use document.formName.ip.value – Ankit

+0

Punkt może być n liczba dynamicznych form takich jak ta. document.forms [0] .ip.value będzie jak znajomość formularza, który chcę wysłać. Chcę przekazać formularz rodzicowi do znacznika zakotwiczenia. Jak mam to zrobić? – user1051505

0

Zmień funkcję do tego:

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

Kiedy piszesz submit_value(this) wartość this jest rzeczywiście element <a> sama, a nie forma.

+0

Punkt jest możliwych liczba dynamicznych formularzy. Chcę przekazać formularz rodzicowi do znacznika zakotwiczenia. Jak mam to zrobić? – user1051505

+1

Jeśli istnieje wiele dynamicznych formularzy, nie powinieneś używać 'id =" ip "' ponieważ identyfikatory muszą być unikalne –

+0

ok, klasa powinna tam być – user1051505

0

Założę, że możesz użyć jquery. Selektory są z tym prostsze.

Zmień poniższy formularz HTML

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

do

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

A potem twoi JS będzie wyglądać

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

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

jQuery jest wszędzie. Nie potrzebujesz JQuery. Dlaczego ludzie zapominają o modelu obiektowym DOM? Zrobił wszystko niemal w odpowiedni sposób:

<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>

Albo można dodać Form 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>

Powiązane problemy