Javascript代码第二次无效

时间:2014-07-24 21:06:10

标签: javascript asp.net

我是javascript的新手。我有两个文本框

<asp:TextBox id="txtbox1" class="txt" runat="server" /> <asp:TextBox id="txtbox2" class="txt" runat="server" />

我在这里使用javascript验证,以便用户无法输入NULL值。我的javascript代码很好。按钮我正在使用此代码。

<asp:Button ID="btn_add" runat="server" OnClientClick="return validate();" OnClick="btn_add_Click" Text="Submit" />

现在,问题在于当用户将文本框留空并单击按钮时,会显示错误消息,然后用户更正错误并再次单击按钮,然后按钮不起作用。没有任何事情发生。

修改:我的javascript代码

 <script type="text/javascript">
    function validate()
    {
        var error = 0,value,a,q,i;
        value = document.getElementsByClassName("txt");

        for (i = 0; i < value.length; i++)
        {
            if (value[i].textContent == '')
            {
                document.getElementById("errmsg").innerHTML = "TextBox can't be blank";

                error = 1;
                break;
            }
        }


       if (error == 0)
        { return true }
        else { return false}

    }

</script>`

2 个答案:

答案 0 :(得分:2)

我被你的错误变量抛出,我原以为失败了。修复非常简单。您正在使用输入,textContent不是有效属性,因为文本没有嵌套在标记内(与div,p,textarea等不同)。

输入在属性中包含它们的内容,当用户修改输入时,值被更改并且有线索。您必须访问输入值。

<script type="text/javascript">
function validate()
{
    var error = 0,value,a,q,i;
    value = document.getElementsByClassName("txt");

    for (i = 0; i < value.length; i++)
    {
        if (value[i].value == '')
        {
            document.getElementById("errmsg").innerHTML = "TextBox can't be blank";

            error = 1;
            break;
        }
    }


   if (error == 0)
    { return true }
    else { return false}

}
</script>`

<form action="form_action.php" method="get">
  <div id="errmsg"></div>
  <div>
    <label>First name</label>
    <input class="txt" type="text" name="fname" value="" />
    <input type="submit" onclick="return validate()" value="Submit" />
  </div>
</form>

如果您要将这段代码放在一点上,我会选择不使用内联函数赋值,并且如其他注释中所述,使用必需的标志,然后在DOMready上检查表单中的必填字段。

然后你可以按照自己的意愿处理它们,onSubmit,onChange。它将为您提供更多的灵活性。

PS。你必须告诉我这是做什么的...... var error = 1,value,a,q,i

答案 1 :(得分:0)

当用户移出文本框时我发现了这个。我通过错误。

<form name="forms.sample" novalidate>

    <md-input-container class="md-block" flex-gt-sm>
        <label>Name:</label>
        <input ng-focus="focus=true" ng-blur="focus=false" style="width:400px;" class="form-control" name="Name" type="text" data-ng-model="Name" ng-pattern="SomePattern" required placeholder="enter the Name here" />
        <div ng-messages for="forms.sample.Name.$error" ng-if="!focus">
            <div ng-if='forms.sample.Name.$touched' ng-message="required">This is required.</div>
            <div ng-if='forms.sample.Name.$touched' ng-message="pattern">Enter a valid domain name</div>
        </div>
    </md-input-container>    
</form>