0

ユーザーがボタンをクリックする必要がないように、Ajax対応フォームの送信ボタンを自動的にクリックしたいと思います(ただし、オプションでクリックできます)。

現在、Javascript からフォームを呼び出す最初の境界に取り組んでいるので、少なくとも、タイマーを作成したら、この部分を理解する必要があります。

私はこれを行うために多くの方法を試しましたが、どれもうまくいきません。これは ASP.NET MVC 4 モバイル アプリケーション (jquery.mobile を使用) であることに注意してください。ただし、jquery.mobile ajax を無効にして、ボタンがまったく機能するようにしています (div を更新して手動の ajax ベースのフォームを作成すると、すべての ajax フォームの送信にフックするため、jquery.mobile アプリでは機能しません)。

したがって、現在のボタンは正常に機能しますが、プログラムで起動できないようです。

私は私のフォームを持っています:

<% using (Ajax.BeginForm("SendLocation", null, new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "result", HttpMethod = "POST" }, new { @id = "locationForm" }))
   { %>
<ul data-role="listview" data-inset="true">
    <li data-role="list-divider">Navigation</li>
    <li><%: Html.ActionLink("About", "About", "Home")%></li>
    <li><%: Html.ActionLink("Support", "Support", "Home")%></li>
    <li data-role="list-divider">Location</li>
    <%: Html.HiddenFor(model => model.GPSLongitude)%>
    <%: Html.HiddenFor(model => model.GPSLatitude)%>
    <li><input type="submit" id="submitButton" value="Send" /></li>
</ul>
<% } %>

私はjavascriptでこれをやろうとしました:

$.ajax({
                type: "POST",
                url: action,
                success: function () {
                    alert('success');
                }
            });

そして、通常はサーバーコードが起動します。ただし、DIV は更新されず、モデルも完全ではありませんでした (すべての内部値が null で存在していたため、新しくインスタンス化されたと仮定します)。

フォームを起動するさまざまな方法も試しました。

        var form = $('#locationForm', $('#myForm'));
        if (form == null) {
            alert('could not find form');
        } else {
            alert('firigin on form');
           form.submit(function (event) { eval($(this).attr("onsubmit")); return false; });
            form.submit();
        }

これも機能しませんでした:

        var f = $('#locationForm', $('#myForm'));
        var action = f.attr("action");
        var data = f.attr("data");
        $.post(action, data, function() { alert('back'); });

これは、私がウェブ全体で見つけたこれを行うためのすべての方法でした.

フォームを起動し、ユーザーが自分で送信ボタンを押したかのように通常どおりに機能させるものはありませんでした。もちろん、これが失敗すると、送信ボタンを押すと完全に機能します...

4

2 に答える 2

0

適切な js ライブラリが含まれていることを確認してください。あなたが必要です。jquery.js、jquery.unobtrusive-ajax.js

web.confg で unobtrusivejavascriptenabled = true を確認してください

  <appSettings>
     <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
  </appSettings>

$('#locationForm').submit(); を試してください。

エラーメッセージが表示されますか?ie を使用している場合は、開発者ツールを使用してネットワーク トラフィックを調べ、何も送信されていないことを確認できます。

于 2013-06-14T04:05:12.350 に答える