Tengo un formulario en un cuadro de diálogo así:

<form action="../ControlerFunction">
    <input type=text id="id1"/>
    <input type=text id="id2"/>
    <button type="submit"> OK </button>
    <button type="button" class="close"> Cancel </button>
</form>

Cuando se envía el formulario, llega a la función de mi controlador, pero ¿cómo puedo recuperar los valores de los dos cuadros de texto?

También cuando cambio la acción del formulario a:

<form action="JavaScriptFunction();">
or:
<form action="JavaScriptFunction();return false;">

Y tengo mi JavaScript en la misma página que:

function JavaScriptFunction()
{
    alert("Hi!");
}

No golpea la función. ¿Me estoy perdiendo de algo?

1
user189606 14 oct. 2009 a las 09:41

6 respuestas

La mejor respuesta

Intenta considerar esto primero:

  1. FORMATO La etiqueta necesita método (POST o GET);
  2. Sus etiquetas INPUT no tienen atributos de nombre que se utilizarán para acceder a los valores.

Código adicional:

<form name="form1" method="POST" onSubmit="JavaScriptFunction(); return false;">
        <input type=text id="id1" name="id1"/>
        <input type=text id="id2" name="id2"/>
        <button type="submit"> OK </button>
        <button type="button" class="close"> Cancel </button>
</form>

Javascript:

function JavaScriptFunction()
{
    var id1Text = document.form1.elements["id1"].value; //get the value of id1
    var id2Text = document.form1.elements["id2"].value; //get the value of id2
    //do whatever you want here.
}
0
junmats 14 oct. 2009 a las 07:47
<form name="form1" method="POST" onSubmit="JavaScriptFunction(); return false;">
        <input type=text id="id1" name="id1"/>
        <input type=text id="id2" name="id2"/>
        <button type="submit"> OK </button>
        <button type="button" class="close"> Cancel </button>
</form>

Javascript:

function JavaScriptFunction()
{
    var id1Text = document.form1.elements["id1"].value; //get the value of id1
    var id2Text = document.form1.elements["id2"].value; //get the value of id2
    //do whatever you want here.
}
0
junmats 14 oct. 2009 a las 07:43

Quiero responder tu primera pregunta.

¿Cómo puedo recuperar los valores de los dos cuadros de texto?

Daniel Elliot.
da una respuesta. Después de darle a las etiquetas de entrada un atributo de nombre con el mismo valor del atributo id, puede acceder a los valores como parámetros de su método de acción.

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ControllerFunction(String id1, String id2)

Su segunda pregunta sobre el script java es respondida por Sergei

0
Community 23 may. 2017 a las 12:13

Además de @Daniel.

Puede usar MyAction [FormCollection collection] y luego extraer sus valores del objeto de colección.

O, si tiene un modelo que pasó a la vista, puede usar TryUpdateModel () para asignar su modelo con los valores del formulario.

Si necesita más, publique un comentario y agregaré el código.

Ir a casa ahora, así que habrá un retraso mientras lucho contra el tráfico. :)

Oh, y bienvenida a SO.

0
griegs 14 oct. 2009 a las 05:57

Corrija la sintaxis de la etiqueta de formulario html:

<form method="post" action="/controller/method/" onsubmit="yourJSFunction();">

...

Esto se adapta a TODOS los lenguajes y tecnologías del lado del servidor.

1
Sergei 14 oct. 2009 a las 07:01

En su controlador, agregue otro método de acción que acepte una POST HTTP y tome la colección de formularios.

Como:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ControllerFunction(FormCollection collection)

Amabilidad,

Dan

1
Daniel Elliott 14 oct. 2009 a las 05:48