【问题标题】:JavaScript textbox validation enable buttonJavaScript 文本框验证启用按钮
【发布时间】:2012-11-15 18:43:42
【问题描述】:

嘿,我有两个文本框和一个按钮。我只希望在“playerName”文本框包含某些内容并且“upperLimit”文本框包含大于 0 的整数时启用按钮。 我希望按钮开始禁用,然后随着用户在文本框中输入而动态更改,不断检查文本框中的内容以查看是否应该激活按钮。这是我尝试过的:

JavaScript:

var playerNameValid = false;
var upperLimitValid = false;


function validatePlayerName()
{
    if (document.getElementById("initialPlayerNameChoice").Value == "")
    {
        playerNameValid = false;
        document.getElementById("startGameButton").disabled = true;
    }
    else
    {
        playerNameValid = true;

        if (upperLimitValid == true)
        {
            document.getElementById("startGameButton").disabled = false;
        }
    }
}


function validateUpperLimit()
{
    if (isNaN(document.getElementById("initialUpperLimitChoice").valuetextContent))
    {
        upperLimitValid = false;
        document.getElementById("startGameButton").disabled = true;
    }
    else
    {
        upperLimitValid = true;

        if (playerNameValid == true)
        {
            document.getElementById("startGameButton").disabled = false;
        }
    }
}

标记:

<asp:Label ID="enterNameLabel" runat="server" Text="Enter your name: "></asp:Label>
<asp:TextBox ID="initialPlayerNameChoice" runat="server"></asp:TextBox>
<br /><br/>
<asp:Label ID="enterUpperLimitLabel" runat="server" Text="Enter upper limit: "></asp:Label>
<asp:TextBox ID="initialUpperLimitChoice" runat="server"></asp:TextBox>
<br /><br />
<asp:Button ID="startGameButton" enabled="false" runat="server" Text="Start Game" />

代码背后:

    initialPlayerNameChoice.Attributes.Add("onkeyup", "javascript:validatePlayerName()");
    initialUpperLimitChoice.Attributes.Add("onkeyup", "javascript:validateUpperLimit()");

【问题讨论】:

    标签: javascript asp.net webforms


    【解决方案1】:

    你几乎得到它。您只需要在代码中修复几行:

    if (document.getElementById("initialPlayerNameChoice").Value == "")
    //In JavaScript there is no property called 'Value' -----^  use 'value' instead:
    if (document.getElementById("initialPlayerNameChoice").value == "")
    
    
    if (isNaN(document.getElementById("initialUpperLimitChoice").valuetextContent))
    //Again, in JavaScript there is no property called 'valuetextContent' ---^
    //Furthermore, 0 is a number, so if you kept this, the button would enable on 0
    //You can use a regular expression to make sure it is a number > 0, and
    //re-arranging your function eliminates re-checking of logic:
    function validateUpperLimit()
    {
      var num = document.getElementById("initialUpperLimitChoice").value.match(/^\d+$/);
      if(num && num[0] > 0)
      {
        upperLimitValid = true;
    
        if (playerNameValid == true)
        {
          document.getElementById("startGameButton").disabled = false;
        }
      }
      else
      {
        upperLimitValid = false;
        document.getElementById("startGameButton").disabled = true;
      }
    }
    

    您可以实施的另一种解决方案是只使用validate() 函数,并让两个字段都调用onkeyup。如果您将验证函数更改为返回 true 或 false,那么您可以消除全局变量的使用,并且逻辑更有意义。

    function validate(){
      if(validatePlayerName() && validateUpperLimit())
        document.getElementById('startGameButton').disabled = false;
      else
        document.getElementById('startGameButton').disabled = true;
    }
    
    function validatePlayerName(){
      if(document.getElementById('initialPlayerNameChoice').value != '')
        return true;
      else
        return false;
    }
    
    function validateUpperLimit(){
      var num = document.getElementById('initialUpperLimitChoice').value.match(/^\d+$/);
      if(num && num[0] > 0)
        return true;
      else
        return false;
    }
    

    然后是你的 onkeyup 代码(我认为你不需要 javascript: 部分,但我不完全确定,所以如果它对你吠叫,就把它扔回去):

    initialPlayerNameChoice.Attributes.Add("onkeyup", "validate()");
    initialUpperLimitChoice.Attributes.Add("onkeyup", "validate()");
    

    【讨论】:

      猜你喜欢
      • 2015-04-01
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多