2012-11-27 58 views
0

這是我的觀點登錄/關閉按鈕不工作:的Javascript實現預期

@model SuburbanCustPortal.Models.LogOnModel 

@{ 
    ViewBag.Title = "Log On"; 
} 

<h2>Log On</h2> 
<p> 
    Please enter your user name and password. @Html.ActionLink("Register", "Register") if you don't have an account. 
</p> 

<p> 
    If only you wish to make a payment on your account and do not want to create a website login, @Html.ActionLink("click here", "RedirectToPaymentPage", "Account"). 
</p> 


@Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.") 

@using (Html.BeginForm()) { 
    <div> 
     <fieldset> 
      <legend>Account Information</legend> 

      <div class="editor-label"> 
       @Html.LabelFor(m => m.UserName) 
      </div> 
      <div class="editor-field focus"> 
       @Html.TextBoxFor(m => m.UserName, new { @class = "GenericTextBox", onkeyup = "enableLogonButton()" }) 
       @Html.ValidationMessageFor(m => m.UserName) 
      </div> 

      <div class="editor-label"> 
       @Html.LabelFor(m => m.Password) 
      </div> 
      <div class="editor-field"> 
       @Html.PasswordFor(m => m.Password, new { @class = "GenericPasswordBox", onkeyup = "enableLogonButton()" }) 
       @Html.ValidationMessageFor(m => m.Password) 
      </div> 

      <div class="editor-label"> 
       @Html.CheckBoxFor(m => m.RememberMe) 
       @Html.LabelFor(m => m.RememberMe) 
      </div> 

      <p> 
      <button name="btn" value="Log On" onclick="disableButton()" disabled="disabled">Log On</button> 
      </p> 

      <p> 
      If you need to retrieve your username @Html.ActionLink("click here.", "ForgotUsername", "Account")<br/> 
      If you need to reset your password @Html.ActionLink("click here.", "ForgotPassword", "Account") 
      </p> 

     </fieldset> 
    </div> 
} 

這是我widget.js:

function enableLogonButton() { 
    if ($('#UserName').val() == "") { 
    $('#btn').attr('disabled', 'disabled'); 
    return; 
    } 
    if ($('#Password').val() == "") { 
    $('#btn').attr('disabled', 'disabled'); 
    return; 
    } 
    $('#btn').removeAttr('disabled'); 
} 

    function logonDisableSubmitButtons(clickedButton) { 

     $("input[type='button']").each(function() { 
      if (this.name != clickedButton) 
      $(this).attr("disabled", "disabled"); 
      else { 
      //hiding the actually clicked button 
      $(this).hide(); 
      //Creating dummy button to same like clicked button 
      $(this).after('<input type="button" disabled="disabled" value="' + $(this).val() + '" class="' + $(this).attr('class') + '" />'); 
      } 
     }); 

     } 

     function disableButton() { 

     $('#btn').click(function (e) { 
      $(this).attr('disabled', 'disabled'); 
     }); 


     } 

我並沒有按鈕啓用不管是什麼我做。

我想什麼是兩兩件事:

  1. 當用戶在登錄和用戶名的東西,使提交按鈕。
  2. 當他們點擊提交時,該按鈕被禁用,所以他們不能點擊兩次。

我沒有運氣。

我做了以下建議的修改,但一旦我在字段中輸入的東西仍然沒有被啓用按鈕

**進一步測試**

我加的是警報()作爲建議如此:

function enableLogonButton() { 
    alert("start"); 
    if ($('#UserName').val() == "") { 
    alert("username"); 
    $('#btn').attr('disabled', 'disabled'); 
    return; 
    } 
    if ($('#Password').val() == "") { 
    alert("password"); 
    $('#btn').attr('disabled', 'disabled'); 
    return; 
    } 
    alert("enabled"); 
    $('#btn').removeAttr('disabled'); 
} 

沒有其中一個被解僱。至少,我沒有得到任何提示。

所以,後來我改變了調用該以確保有人甚至看到了JScript的:

@Html.PasswordFor(m => m.Password, new { @class = "GenericPasswordBox", onkeyup = "enableLogonButtonX()" }) 

,我得到這個消息:

Microsoft JScript runtime error: 'enableLogonButtonX' is undefined

所以,我認爲這是一個看JScript。

我加入這個:

<script> 
    function myFunction() { 
     alert("hit!"); 
    } 
</script> 

而且改變了這個:

<button name="btn" value="Log On" onclick="myFunction()" disabled="disabled">Log On</button> 

和我 「打」 工作。所以,我相信onclick也在工作。

回答

2

disabled是一個布爾屬性,而不是屬性。

要設置:

$('#btn').attr('disabled', 'disabled'); 

要清除:

$('#btn').removeAttr('disabled') 
+0

我做了更改,但按鈕仍然沒有被啓用,一旦填充字段。我更新了我的帖子。 – ErocM

+0

放下一些alert()測試點,看看發生了什麼。 –

+0

好的,我做了,我在原來的問題中添加了結果。 – ErocM

0

代替改變禁止屬性的值的從元件完全除去它。

即替換此

$('#btn').attr('disabled', false); 

隨着

$('#btn').removeAttr('disabled'); 
1

除非我不讀您的問題足夠接近(其中,無可否認,可能是這個原因,因爲它是後5這裏...時間啤酒)或你的問題中有一個錯字,我認爲你的錯誤信息爲你提供了一切你需要調試的東西。

這是您的留言:Microsoft JScript runtime error: 'enableLogonButtonX' is undefined

這裏是你的函數名稱:enableLogonButton

因此,根據錯誤信息,您呼叫的功能enableLogonButtonX()但你的函數被命名爲enableLogonButton。更改爲:

@Html.PasswordFor(m => m.Password, new { 
     @class = "GenericPasswordBox", 
     onkeyup = "enableLogonButton()" })