0

在结合我通过阅读这个问题的答案所学到的知识之后,我已经弄清楚了如何在用户在自动完成字段中输入与任何可用选择都不对应的文本时生成错误消息。

这个页面是一个 ASP.NET 页面,上面已经有一个 ASP.NET 验证器的基础结构。我想要发生的是在页面上引入一个验证器,当用户输入不在列表中的内容时导致页面验证失败。这是我到目前为止所拥有的:

我从匿名者对上述问题的回答开始:

change: function (event, ui) {
        if (!ui.item) {
             $(this).val('');
         }
    }

我在我的autocomplete()javascript中用这个替换了它:

    change: function (event, ui) {
        if (!ui.item) {
             $(""#" + lblAutocompleteError.ClientID + @""").show();
             $(""#" + txtDummy.ClientID + @""").val('');
        } else {
             $(""#" + lblAutocompleteError.ClientID + @""").hide();
             $(""#" + txtDummy.ClientID + @""").val('Dummy');
        }
    },

它是在代码隐藏而不是前端生成的 javascript,这就是为什么它具有所有文字字符串的优点......

在前端,我声明了两个控件:txtDummy我根据自动完成是否包含匹配的字符串来设置和清除它们,并且rfvDummy需要TextBox填充。

<asp:RequiredFieldValidator runat="server" ID="rfvDummy" 
    ControlToValidate="txtDummy" />
<asp:TextBox runat="server" ID="txtDummy" Text="Dummy" Visible="false" />

问题是,RequiredFieldValidator当它应该失败时,它并没有失败。更重要的是,我有一种下沉的感觉,我在这里走错了路。对于我想要完成的事情,创建一个 hiddenTextBox和 a似乎太过分了。RequiredFieldValidator当用户输入不在自动完成列表中的值时,是否有一种直接的方法可以在客户端导致页面验证失败,并且消息的格式与我的其他验证器一样?

4

1 回答 1

0

我的自动完成逻辑是正确的,这是隐藏txtDummy控件的方法。通过使用

Visible="false"

没有生成HTML txtDummy,所以RequiredFieldValidator没有什么可看的。将代码更改为TextBox

<asp:TextBox runat="server" ID="txtDummy" Text="Dummy" style="display: none;" />

允许生成 HTML。当调用上面的我的change子句时,如果在TextBox.

于 2013-01-09T22:47:51.577 回答