2012-05-10 4 views
2

На мой взгляд, я хочу, чтобы две кнопки заполняли три скрытых поля формы и отправляли их. Это не работает, и я не знаю, почему. Есть идеи?Кнопка вызова функции javascript error

У меня есть следующий код:

<script language="javascript" type="text/javascript"> 
    function FillAndSubmit(thisid) { 
     $('input[name=First]').val(thisid); 
     $('input[name=Second]').val(@Model.ID); 
     $('input[name=Third]').val(@ViewBag.Something); 
     document.form.submit(); 
    } 
</script> 

А имеют форму с невидимыми полями:

@using (Html.BeginForm(null, null, FormMethod.Post, 
         new { name = "form", id = "form" })) 
{ 
    @Html.Hidden("First") 
    @Html.Hidden("Second") 
    @Html.Hidden("Third") 
} 

и две кнопки:

<button class="Button" id="ButtonA" onclick="javascript:FillAndSubmit(this.id);"> 
    CaptionA 
</button> 
<button class="Button" id="ButtonB" onclick="javascript:FillAndSubmit(this.id);"> 
    CaptionB 
</button> 

Если я ставлю кнопки внутри объем формы, он представляет, но не заполняет скрытые поля. Таким образом, это просто не вызов функции. Javascript работает на других страницах того же приложения.

ДОБАВЛЕНО:

Сгенерированный источник:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>Title</title> 
    <link href="/Content/Site.css" rel="stylesheet" type="text/css" /> 
    <script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script> 
    <script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script> 
</head> 

<body> 
    <script language="javascript" type="text/javascript"> 
     function Botao(thisid) { 
      $('input[name=First]').val(thisid); 
      $('input[name=Second]').val(41); 
      $('input[name=Third]').val(10/5/2012 1:58:02 PM); 
      document.form.submit(); 
     } 
</script> 

... 
Some div's with some text 
... 


<form action="/Controller/Action/" id="form" method="post" name="form"><input id="First" name="First" type="hidden" value="" /><input data-val="true" data-val-required="The DateTime field is required." id="Second" name="Second" type="hidden" value="10/5/2012 1:58:02 PM" /><input id="Third" name="Third" type="hidden" value="" /></form>   
    <button class="Button" id="ButtonA" onclick="javascript:Botao(this.id);"> 
     CaptionA 
    </button> 

    <button class="myButton" id="ButtonB" onclick="javascript:Botao(this.id);"> 
     CaptionB 
    </button> 

    </body> 
</html> 
+1

Пожалуйста, покажите нам сгенерированный источник. – SLaks

+0

Не отображается ли в JS-консоли браузера ошибка ?. Вы пытались удалить часть 'javascript:' ваших атрибутов 'onclick', поскольку они не нужны ?. Вы пытались отладить с помощью 'console.log', чтобы узнать, вызвана ли функция ?. Вы пытались вызвать функцию непосредственно из консоли JS браузера? – fguillen

+0

Удаление 'javascript:' ничего не делал. Теперь я проверю консоль JS. –

ответ

2

JQuery-х .val(value) принимает либо строку или массив строк, место цитирует вокруг @Model.ID и @ViewBag.Something:

$('input[name=Second]').val("@Model.ID"); 
    $('input[name=Third]').val("@ViewBag.Something"); 
+0

Это сработало, и я просто набрал «@ Model.ID» и «@ ViewBag.Something»! –

+0

теперь это прекрасно;) –

+0

Спасибо, вот полезная ссылка: http://api.jquery.com – Coder

3

Это требует цитаты:

$('input[name=momentoDaConsulta]').val("10/5/2012 1:58:02 PM");

+0

Но эта дата генерируется двигателем Razor. Код имеет '.val (@ ViewBag.Something)'. –

+1

Мне все равно, что его генерирует, сгенерированный код неправильный. Он пытается делить, а затем терпит неудачу на других номерах («SyntaxError: Неожиданный номер»), и последняя команда никогда не вызывается - это по совпадению «document.form.submit();» – Corkscreewe

+0

Это сработало! Я поставил двойную кавычку в '' @ Model.ID "и' @ @ ViewBag.Something "'! –

Смежные вопросы