3

我想知道我是否可以创建一个实时事件来检查文本框的值。我的意思是,如果文本框为空,则按钮将不可点击。我在想除了验证之外还有其他方法可以在代码中执行此操作吗?

到目前为止,我被困在这里:

if (YourName.Text = null)
{
       SubmitButton.Enabled = "False";
}

你的名字是文本框,提交按钮是按钮:)

4

4 回答 4

9

System.String提供了一对方便的函数IsNullOrEmptyIsNullOrWhiteSpace您可以使用它们来测试在最终用户看来为空的各种字符串:

if (string.IsNullOrWhiteSpace(YourName.Text)) {
    SubmitButton.Enabled = false; // <<== No double-quotes around false
} else {
    // Don't forget to re-enable the button
    SubmitButton.Enabled = true;
}

即使对于完全由空白字符组成的字符串,这也会禁用按钮,这在您验证名称时是有意义的。

以上与

SubmitButton.Enabled = !string.IsNullOrWhiteSpace(YourName.Text);

它比带有if.

于 2013-05-03T14:51:45.790 回答
2
SubmitButton.Enabled = YourName.Text.Length > 0;
于 2013-05-03T14:55:38.627 回答
2

好吧,从禁用按钮开始。将 TextChanged 事件添加到文本框。并且每次检查字符串是否为空(在 TextChanged 事件处理程序中使用 @dasblinkenlight 的代码。

于 2013-05-03T15:16:52.353 回答
1

这是一种老式的 javascript 方法。您可以使用 jquery,但如果这就是您想要做的一切,那将是矫枉过正。在下面的代码中,oninput当通过键盘或鼠标/点击更改文本时会触发该事件(您需要捕获所有内容,这应该为您完成)。然后,javascript 获取文本框的内容,删除前面和后面的空格,并将提交按钮上的 disabled 属性设置为等于文本框为空,限定为.length == 0.

注意:如果您不想禁用只有空格更改的文本,该更改submit.disabled = (tb.value.trim().length == 0);submit.disabled = (tb.value.length == 0);删除对 trim() 方法的调用。trim() 方法去除前面和后面的空格。

这种方法不需要回发来启用或禁用提交按钮。

<!doctype html>
<!-- tested in firefox -->
<html>
<head>
    <title>Demo</title>
    <script type="text/javascript">
        var enableInput = function() {
            var tb = document.getElementById("text_box");
            var submit = document.getElementById("submit");
            submit.disabled = (tb.value.trim().length == 0); 
        };
    </script>
</head>
<body>
    <form>
        <input type="text" id="text_box" name="test" oninput="enableInput();"></input><br/>
        <input id="submit" type="submit"></input>
    </form>
</body>
</html>
于 2015-05-31T08:34:10.777 回答