2013-06-13 15 views
7

Jestem w trakcie przekształcania istniejącej strony internetowej, aby używać MVC i Entity Framework.Znacznik zakotwiczenia jako przycisk przesyłania?

Układ/stylizacja ma pozostać taka sama, a aby wykonać tę wytyczną, muszę przesłać mój formularz logowania za pomocą znacznika <a>, ponieważ ma on niestandardowy obraz przycisku.

Oto moja postać:

@using (Html.BeginForm("Login", "Login", FormMethod.Post, new { id = "login", action = "Login" })) 
{ 
    <label> 
     <span>Username 
     </span> 
     <input type="text" name="UserName" id="UserName" class="input-text required" /> 
    </label> 
    <label> 
     <span>Password 
     </span> 
     <input type="password" name="Password" id="Password" class="input-text required" /> 
    </label> 
    <label> 
     <input type="checkbox" name="RememberMe" id="RememberMe" class="check-box" /> 
     <span class="checkboxlabel">Remember Me</span> 
    </label> 
    <div class="spacer"> 
     <a href="javascript:void(0)" onclick="login();" class="login-button"></a> 
    </div> 
} 

Jak widać, <a> tag dawniej składać informacji logowania przy użyciu javascript. To nie jest to, co chcę osiągnąć.

Jak zmienić ten tag, aby przesłać mój formularz do działania kontrolera?

+0

Czy specyfikacja specyfikacji określa, że ​​nie można zmienić znacznika zakotwiczenia na znacznik przycisku? Bo mam na myśli, przyciski pozwalają również na obrazy. Prawdopodobnie byłoby to drobnym usprawiedliwianiem css zamiast używania javascript do przesłania formularza. – rossisdead

+0

@rossisdead To musi wyglądać tak samo jak wcześniej. Próbowałem użyć przycisku z obrazem, ale wyglądało to na bardzo odległo. Po kliknięciu obraz zapadłby się w stronę, a nie w ten sposób wyglądał przycisk. Potrzebuję przycisku, który pojawia się TYLKO jako mój obraz i nie ma ŻADNEJ animacji po kliknięciu. – Kehlan

Odpowiedz

8

Zrobiłem małe zmiany

HTML

<form action="test.aspx" type="POST"> 
    <label> 
     <span>Username</span> 
     <input type="text" name="UserName" id="UserName" class="input-text required" /> 
    </label> 
    <label> 
     <span>Password</span> 
     <input type="password" name="Password" id="Password" class="input-text required" /> 
    </label> 
    <label> 
     <input type="checkbox" name="RememberMe" id="RememberMe" class="check-box" /> 
     <span class="checkboxlabel">Remember Me</span> 
    </label> 
    <div class="spacer"> 
     <a href="javascript:void(0)" class="login-button">Login</a> 
    </div> 
</form> 

jquery

$(document).ready(function(){ 
    $(document).on("click",".login-button",function(){ 
    var form = $(this).closest("form"); 
    //console.log(form); 
    form.submit(); 
    }); 
}); 

JSFiddle

+0

Skończyłem stylizować mój własny przycisk dla tego konkretnego projektu, ale to nadal jest najlepsza droga. Dzięki. – Kehlan

3

Zazwyczaj nie chcesz umieszczać dużo javascript wewnątrz znaczników html, ale jeśli zdarzy się to tylko raz w twoim rozwiązaniu, będzie dobrze. Jeśli jednak wszystkie znaczniki zakotwiczenia będą wymagały dodania, rozwiązanie Gokana będzie działało lepiej z klasą znaczników i niektórymi javascriptami w popularnym miejscu.

zmienić znacznik zakotwiczenia wyglądać mniej więcej tak:

<a href="javascript:$('form').submit();" class="login-button"></a> 
+0

Najprostszym rozwiązaniem, dzięki. – Kehlan

+1

Dzięki! Zazwyczaj nie chcesz umieszczać dużo javascript wewnątrz znaczników html, ale jeśli zdarzy się to tylko raz w twoim rozwiązaniu, będzie dobrze. Jeśli jednak wszystkie znaczniki zakotwiczenia będą wymagały dodania, rozwiązanie Gokana będzie działało lepiej z klasą znaczników i niektórymi javascriptami w popularnym miejscu. – Jay

+0

Jestem tego świadomy, dziękuję. To jedyne miejsce w tej sekcji mojej witryny, które będzie wymagać tego obejścia, więc nie będzie to problemem. Zaufaj mi, byłbym o wiele bardziej konwencjonalny, jeśli w zasadzie nie utrzymywałbym tej strony przez schematy/wzorce projektowe. – Kehlan

0

wystarczy zmienić pojedynczej linii, Dla Optimization myślę, że ten jest najlepszy sposób.

@using (Html.BeginForm("Login", "Login", FormMethod.Post, new { id = "login", action = "Login" })) 
{ 
    // your HTML code 
    <div class="spacer"> 
     <a href="" onclick='$("#login").submit()' class="login-button"></a> 
    </div> 
} 
Powiązane problemy